拒绝Smali语法,使用java代码修改并重签名安装“春节解题领红包之3”程序

查看 49|回复 2
作者:11649827   
提前声明一点:这里只是分享一下解题的实际操作过程,以便大佬们看到了帮忙解决一下存在的问题。这里用到了AndroidStudio软件和一些辅助软件,其实这个红包程序不进行修改也能得到正确结果,直接修改smali代码也更快捷,我这用很古板的方法,主要是需要使用Smali语法,不是最佳的做法,仅仅提出这个思路。
下面开始阐述这个过程:
  • 下载”【2023春节】解题领红包之三.apk“,并解压到文件夹中。 Happy_New_Year_2023_Challenge.rar
  • 用压缩软件打开apk文件,复制出安装包中的classes.dex文件(打不开apk文件可以修改.apk为.zip)。



    提取dex.png (59.57 KB, 下载次数: 0)
    下载附件
    将dex从安装包中提取出来
    2023-2-7 22:47 上传

  • 将dex文件转换为jar文件,这里需要使用到d2j-dex2jar这个工具,工具的下载可以在互联网上查找,将dex文件拖到工具上即可完成转换得到classes-dex2jar.jar文件。这一步如果有提示报错,无法完成转换,通常是java代码中的false和0的问题,在互联网上也有解决方法,或者重新编译工具。



    将dex转换为jar.png (60.97 KB, 下载次数: 0)
    下载附件
    2023-2-7 22:56 上传

  • 使用recaf工具或者其他工具编辑jar文件,删除其中的android依赖和com.google包(goolgle包需要用压缩包软件拆包删除),这步的目的是避免在项目中由于存在两份相同的依赖,软件后续无法完成编译的操作,按保存,之后点击导出程序,保存这个新的jar文件。



    移除依赖库.png (30.07 KB, 下载次数: 0)
    下载附件
    移除依赖包
    2023-2-7 23:17 上传

  • 打开AndroidStudio,新建空白安卓项目,修改保存路径,点击完成创建。



    创建空白项目.png (86.72 KB, 下载次数: 0)
    下载附件
    创建空白项目
    2023-2-7 23:06 上传



    修改保存路径.png (49.02 KB, 下载次数: 0)
    下载附件
    修改保存路径
    2023-2-7 23:06 上传

  • 将左上角的Android改为项目,并展开到项目下的的libs文件夹中,将修改后的jar包拖入其中。之后右键jar包,选择Add as Library...,并选择创建库到main中。



    Android改为项目.png (37.89 KB, 下载次数: 0)
    下载附件
    2023-2-7 23:52 上传



    保存到main.png (35.11 KB, 下载次数: 0)
    下载附件
    2023-2-7 23:22 上传

  • 之后可以在lib目录下展开jar包,查看里面的class文件,这就是java源代码生成的文件,可以看到java源代码。
  • 找到MainActivity.class和MainActivity$$ExternalSyntheticLambda0.class,带$$符号的是子类,点击反编译为java代码。
  • 这时如果想要修改MainActivity的代码,就需要将这个类和它的子类代码的包在src的main中进行创建“com.zj.wuaipojie2023_3”.



    新建软件包.png (151.91 KB, 下载次数: 0)
    下载附件
    2023-2-7 23:51 上传

  • 新建同名MainActivity的.java文件和同名子文件,之后将反编译的源代码(里面包含了MainActivity和子类的代码,需要将子类的代码放入子类的同名.java文件中),如果出现androidx报错,那么就是前面未删除安卓依赖库。



    新建java源代码文件.png (32.1 KB, 下载次数: 0)
    下载附件
    2023-2-7 23:57 上传



    未修改jar文件的效果.png (85.68 KB, 下载次数: 0)
    下载附件
    未修改jar包的问题
    2023-2-7 23:50 上传

  • 使用代码提示,修复代码中的错误,完成前期的准备。
  • 修改代码的逻辑,保存项目选择已修改的源文件点击编译,然后等待编译成功。



    修改代码逻辑.png (70.08 KB, 下载次数: 0)
    下载附件
    2023-2-8 00:06 上传

  • 编译后的class文件在\build\intermediates\javac\debug\classes\com\zj\wuaipojie2023_3目录,压缩包软件打开原未作修改的classes-dex2jar.jar,然后将编译后的class文件替换进去。
  • 将替换过class文件的jar文件转换为dex文件,这里需要使用到d2j-jar2dex这个工具,之后将生成的classes-dex2jar-jar2dex.dex修改文件名为classes.dex,替换掉原包,签名安装。



    jar转换为dex.png (38.92 KB, 下载次数: 0)
    下载附件
    2023-2-8 00:33 上传

  • 最后打开修改后的软件,听到一声只因,获得flag{},到这就已经完成了整个过程。
    这种方法最后有一个重要的问题没有解决,就是不清楚如何动态调试修改的java源代码(不是调试smali代码,看不懂smali代码),有人清楚的可以指导一下如何实现。

    文件, 下载次数

  • zzhd   

    感谢分享
    yippee   

    谢谢图文并茂的分享
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部