善其事利其器:android逆向工具介绍
android的开发环境一般是Eclipse或者android studio,和windows应用程序的开发有所区别。android系统下的逆向分析也有不同的特点,需要不同的工具软件来辅助,下面依次介绍。
android 系统APP的逆向分析分为java层和native层这两层,两层有不同的特点和难度。
第一层是java层,分析比较简单,可以利用JEB直接将dex字节码反编译为可读性极强的java代码。当然,JEB和下文的APKIDE都需要JDK的支撑,需要安装对应版本的java开发环境。
也可以利用APKIDE(APK改之理)将APP解包,反编译为smali代码,修改smali代码后再用APKIDE打包为APP,实现二次开发。修改smali代码时,可以对照JEB反编译的java代码进行。一般,如果不涉及到Native代码,用APKIDE和JEB即可完成逆向目标。
DDMS (Dalvik Debug Monitor Service)是 Android 开发环境中的Dalvik虚拟机调试监控服务,它为我们提供的Logcat可以接收java层和native层的格式输出,类似C语言中的printf,是逆向调试的一大助手。
若需要调试,那么Android SDK自带的模拟器Emulator就派上用场了,特别是在没有实体机的情况下,该模拟器能很好的代替android实体机来作为APP运行的载体。当然,由于模拟器效率不高,运行速度慢,如果有闲置的实体机还是建议直接使用实体机调试。
ADB(Android Debug Bridge)是android SDK自带的一个工具,主要作用是在开发电脑和手机之间建立一个桥梁,上文的DDMS和下文的IDA调试都需要用到它。
IDA不仅是一个反汇编,也是一个很不错的调试器,特别是对于android调试来说,IDA非常实用,下面具体介绍其用法。
下面通过一个示例介绍android逆向工具的使用。
JEB载入待分析的APP文件,虽然有字符串加密,也有混淆,但我们很清楚的看到图中的check是关键函数。
来到check函数的定义处,从native关键字可以知道该函数是从so库中调用的native函数。
再看APKIDE的解包结果,可以看到该APK只调用了一个so库,即图中librf-chen.so,接下来分析该so库文件。
IDA载入该so库文件,来到函数check处。
接着将IDA目录下dbgsrv子目录中的android_server文件,通过“adb push android_server /data/tmp/sv68”命令导入待调试手机中,并重命名为sv68。
在cmd窗口中依次执行如下命令,使android_server运行。
另开一个窗口,输入如下命令实现端口转发。
另外打开一个IDA,按如下菜单选择。
在弹出的对话框中按如下内容填入。
选择待调试的程序,载入IDA调试,按如下菜单选择。
找到librf-chen.so的代码段,双击进入代码段的段首。
本文就到这里,主要讲了几个android逆向工具的使用。
更多精彩内容
版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《善其事利其器:android逆向工具介绍》的版权归原作者「风云处」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458
文章来源: 阅读原文
风云处微信公众号:fyc1687
手机扫描上方二维码即可关注风云处微信公众号