IDA破解apk的初次尝试

来源:互联网 发布:杰尼斯偶像结婚知乎 编辑:程序博客网 时间:2024/04/28 04:24

1、背景介绍

      做APP开发一年多的时候,我突然对破解有了浓厚的兴趣,看了些资料,自己也动手写了写,老早之前有这样一篇文章,一直没空拿出来分享一下。最近又重新整理了一下,感觉写得还是比较详细的,拿出来和大家分享探讨一下。


2、工具和环境

工具:IDA Pro6.1,C32arm,apktool
环境:win7,jdk1.6
文件:crackme02.apk

        上面的工具和文件大家自己准备一下,最后的crackme02.apk这个文件我会上传一份到CSDN让大家下载,好与我的文件保持一致。

        实际上本文也是《Android软件安全与逆向分析》一书中的总结,大家也可以找这本书看看。


3、加载apk到IDA

       首先使用zip解压缩文件取出crackme02.apk文件中的classes.dex文件,然后打开IDA Pro编译器,将程序拖入到IDA Pro编译器中,会有一个弹窗“Load a new file0”对话框,直接点击OK按钮。(注意选择Android文件)
       这时,程序会进入反汇编的界面,稍等一下,IDA Pro分析完classes.dex后会出现如下图所示的情形:



4、定位资源选项

       按照破解思路,我们找到资源文件中的string.xml文件,可以看到对应的字符串为unsuccessed。然后我们使用apktool反编译crackme02.apk文件,从smali文件的R文件中找到R$string.smali文件中的unsuccessed所对应的id值,如下图所示,我们得到的结果是:0x7f05000c


       当找到字符串对应的id值之后,我们回到IDA Pro界面上来,在IDA的主窗口按下Alt+T快捷键,会弹出字符串搜索的窗口,我们在该窗口中输入刚才找到的id值0x7f05000c,如图所示:


       然后会看到鼠标定位到了0x7f05000c所对应的地方。
       这时候,我们向上查找最近的判断语句,很快会定位到CODE:0002CDD2行的if-nez。


5、查找指令代码

       我们点击IDA Pro主界面上的“Hex View-A”选项卡,发现这行代码的指令为“39 00 0f 00”第一个字节39为if-nez的指令操作码,我们只需将其改为if-eqz的指令码就行了。查表如图所示:




6、修改

       关闭IDA Pro,在弹出的Save datebase对话框中勾选“DON'T SAVE the database”然后点击OK退出程序。
       使用十六进制编辑工具打开classes.dex文件,本处使用C32asm,定位到0X2CDD2处,修改39为38,保存退出。



7、签名

       apk程序在安装的时候会调用dexopt对dex进行验证与优化,dex文件的DexHeader头的checksum字段标识了dex文件的合法性。当我们修改了classes.dex文件之后,dex文件在验证时计算checksum会失败,这样我们需要重新计算并写回checksum的值。
       最后我们将修改后的classes.dex文件压缩到刚才解压的zip包中,然后删除MAIN-INF文件,使用Auto-sign签名文件对它签名即可。


8、测试

      测试通过!


9、文件地址

http://download.csdn.net/detail/ljtyzhr/8071745




0 0
原创粉丝点击