安卓逆向工具的使用(二)

时间:2023-02-12 18:09:36

Android Killer逆向工具

特别提醒:本文仅供学习交流之用,如用于其他用途概不负责!!!

Android Killer是一款为用户提供图形化界面的反编译工具,它集成了APK反编译、APK签名、编码转换、APK文件打包等多种功能.关键词检索较为精准是Android Killer相较于其他反编译工具的一个优势.Android Killer集成了APK反编译功能,因此在安装Android Killer之前需要安装JDK的开发环境(关于JDK开发环境的配置与使用参考之前的文章​​安卓逆向工具的使用(一))​​.尽管Android Killer已经不再更新维护,很多安卓逆向研究者仍然安装和使用它,用户和受众依然很广泛.

第一步,下载Android Killer的软件压缩包,下载链接放在文末,解压压缩包到本地安装路径,双击AndroidKiller.exe进行配置.

安卓逆向工具的使用(二)

第二步,双击AndroidKiller.exe之后,可能需要手动添加JDK的可执行路径,这里点击“OK”执行下一步操作.

安卓逆向工具的使用(二)

依次选择“主页-配置-Java”选项卡,点击安装路径的文件夹图标,选择自己安装JDK开发环境安装目录,需要配置到bin路径下.再次双击AndroidKiller.exe可执行文件不会弹出之前的提示,可正常使用.

第三步,测试Android Killer是否可正常运行.将待测试的.apk文件拖拽至“开始”下方的空白界面即可自动完成反编译.Android Killer默认使用apktool工具对APK文件进行反编译.

安卓逆向工具的使用(二)

如果反编译的日志输出结果出现“APK 反编译完成!”的提示信息,证明APK文件反编译成功.反编译成功之后,会在工程信息界面输出APK相关信息结果包括包名、入口文件、权限、安卓四大组件等信息.其中包名和入口程序信息是调试程序的必要的两个参数,入口程序也被称为主程序入口(Main Activity)是运行APP时进入的第一个活动界面(Activity).

安卓逆向工具的使用(二)

当切换至“工程管理器”选项卡界面时,可以看到反编译后的所有文件夹,这些结果和之前在APK的基本结构一文中介绍的直接解压得到的结果不一样,这里的结果都是通过apktool工具反编译之后的结果.

反编译结果中存在smali文件夹. smali文件夹存放的是smali代码,它是使用针对apk设计反编译语法书写的文件代码,是Dalvik的寄存器语言.通过修改smali代码来修改apk源码功能,是apk逆向的基本操作技巧.Android Killer通过dex2jar.jar的jar包文件将dex文件转换为jar包文件,完成该操作之后可以使用jadx-gui工具浏览apk的java源代码.

安卓逆向工具的使用(二)

jadx-gui工具已经被Android Killer工具集成,无需另外安装和配置.可在Android Killer目录下的“/bin/jd-gui/”文件夹下找到jadx-gui的可执行文件jd-gui.exe.反编译过程中使用的apktool工具也放在bin文件夹下,可在“bin/apktool”文件夹下找到.可以下载最新版本的工具替换进行更新和升级.

安卓逆向工具的使用(二)

“工程搜索”选项卡界面是Android Killer最常用的功能界面,包括搜索字符、替换字符、搜索选项和搜索进度展示等多种功能.可在搜索字符下方的文本框输入想要搜索的字符串;替换字符下方的文本框输入替换后的文本字符;搜索范围支持选择整个项目、单个文件或文件夹;文件类型支持指定文件后缀来搜索内容如“.smali”、“.xml”等;匹配大小写选项可以支持输入文本忽略大小写的区别进行匹配.

Android逆向助手

Android逆向助手主要用于对apk的重新打包和签名.

第一步,下载Android逆向助手的软件压缩包,下载链接放在文末,解压压缩包到本地安装路径,双击对应的.exe可执行文件进行使用.

安卓逆向工具的使用(二)

第二步,使用一个apk对工具进行测试是否可以正常使用.如果遇到报错,可能是因为第一次安装无法检测到JDK开发环境,可重启计算机再次尝试.本例使用其中一个“签名apk”的功能进行测试.点击其中的“签名apk”的选项,选择好待重签名的apk文件作为源文件,选择好重签名后的文件路径作为目标文件,点击下方的操作按钮执行操作,执行成功后在相应的目标文件夹路径会生成重签名后的文件.

安卓逆向工具的使用(二)

jeb逆向工具

jeb逆向工具主要用于调试apk源码,使用该工具可以提高逆向的代码审计效率,它支持在控制台打印输出apk运行的结果,也支持对安卓代码的debug.

第一步,下载jeb的软件压缩包,下载链接放在文末,解压压缩包到本地安装路径即可使用.在windows操作系统下,可通过cmd命令行执行.bat结尾的批处理文件来运行jeb逆向工具,也可双击这个批处理文件运行.同样地,运行这个软件需要配置好JDK开发环境.

安卓逆向工具的使用(二)

打开之后,在界面下方会出现Logger选项卡及Console选项卡分别展示日志信息和控制台程序运行信息.本例中提示使用64位的JDK开发环境分配了内存200M,最大支持分配3.5G的内存空间进行反编译.如果超过内存限制,需要进行更改.

安卓逆向工具的使用(二)

第二步,将测试样例的apk文件拖拽至Project Explorer进行反编译操作,测试程序软件的反编译功能是否可正常使用.完成反编译后在Project Explorer选项卡中会展示出apk的反编译结果.这个结果与Android Killer的结果不相同,包括Manifest文件、Certificate文件、Bytecode文件、Resources文件夹、Assets文件夹和Libraries文件夹.其中Manifest文件对应反编译后的AndroidManifest.xml的配置清单文件;Certificate文件对应的是签名证书文件;Bytecode文件对应的是smali字节码文件;Resources文件夹对应的是编译的资源文件;Assets文件夹对应的是静态资源文件.双击Bytecode文件在左侧弹出两个选项卡分别为“Bytecode(Virtual,Merged)/Hierarchy”和“Bytecode(Virtual,Merged)/Disassembly”对应了分层展示的smali语法代码文件和合并的smali语法代码文件.点击任意一个选项卡,按住快捷键“Ctrl+F”可实现搜索源代码的功能.

安卓逆向工具的使用(二)

第三步,因为JEB主要用于在安卓模拟器或手机上进行安卓代码的运行调试,因此还需要配置好adb(android debug bridge)工具. adb工具主要用于电脑端和安卓端(手机端或模拟器)建立通信,控制安卓代码运行和调试.

jadx逆向工具

jadx主要用于将dex文件反编译成java代码,也用于安卓逆向的代码审计,它支持对代码的反混淆功能.

第一步,下载jadx压缩包下载到本地,解压至安装路径下,进入安装目录的bin文件夹路径下,并将待反编译的dex文件放入该文件夹下.

安卓逆向工具的使用(二)

第二步,可通过在地址栏输入cmd,在当前目录下打开cmd命令窗口,执行命令“jadx -d out classes.dex”完成对dex文件的反编译,反编译结果输出在同目录的out文件夹下.注意,通过jadx工具只能反编译java代码,对于其中的安卓代码会出错.通常需要结合jeb和Android Killer工具使用.

安卓逆向工具的使用(二)

本文涉及到的所有软件包链接:https://pan.baidu.com/s/1RxrSYookRzH9dA6rBgV8Qw 密码: as6r

更多学习资料请关注我的微信公众号白泽图鉴获取!!!

安卓逆向工具的使用(二)