划重点:
关注公众号,后台回复crackme,获得本题apk~
题目来源:
2016华山杯Android逆向题
题目:
软件包2.zip,要求进行验证登陆
知识点:
ZIP伪加密、IDA动态调试so、Android Killer使用
解题过程:
拿到zip压缩包直接解压失败,根据zip伪加密原理如下,压缩文件数据区和目录区有关全局方式标记位,偶数表示无加密,奇数表示加密,理论如下所示。
对比发现待分析的zip包为zip伪加密。修改504B0102后边的第五第六个字节为偶数。总共有两处,说明zip下很多文件,只有两个文件做了伪加密,修改如下所示。
解压后的文件缺个apktool.yml,拷贝一个进去用apktool回编后再签名,但安装apk运行后提示权限不够,将apk拉入AK分析,如下所示,我们直接修改Smali跳过isExit检查。
然后我们看验证部分代码,如下所示,由Java层传入用户输入到Native层,由so对密码进行验证并输出结果,所以下面我们需要使用IDA对Android的so进行动态调试。
因为libgeneratekey.so存放在armeabi目录下,所以需要使用32位的IDA工具以及对应的android_server进行Androi的so动态调试。
跟踪代码如下所示,encodePS获取密码,在执行完encodePS后,其返回值即密码存放在R0内,所以在执行完encodePS后的下一条指令上设置断点。
开始调试后,程序断在执行完encodePS后的下一条指令上,可以看到寄存器R0值。
点击寄存器R0指向的箭头,可以看到如下信息,即[stack]:FFD5EF68指向的内容是“lxienietIeAehfyih”
在手机上进行密码验证,验证ok。
![68a268b815c2427403dfb43747181da1.png](https://i-blog.csdnimg.cn/blog_migrate/5bdf28173b5a12ab87a3ae47724afb26.png)
![baa8f63b0f0f018efaeb030b0914a9ec.png](https://i-blog.csdnimg.cn/blog_migrate/37c8c81566255f7b9eb54cfd3352c2af.png)
![577b8d85ea9c4d63c9ae33e14be3eb62.png](https://i-blog.csdnimg.cn/blog_migrate/872a08cba9077d1340438de5565982ac.png)
![91e3a08059095a0152445afdf6bd01a0.png](https://i-blog.csdnimg.cn/blog_migrate/a1dea75a3251997da88c718b1f154c60.png)
![211a7f3dd70a61c759f2144d4aacd94e.png](https://i-blog.csdnimg.cn/blog_migrate/abc6c2f26f36fde0b2889418ee59becc.png)
![af38a7a8e3ae747e49040ba65ded2f99.png](https://i-blog.csdnimg.cn/blog_migrate/621238594844d76437e83e64f8127845.png)
![e81551f565a5f906864afe042f480f1b.png](https://i-blog.csdnimg.cn/blog_migrate/91d4ec6a6617774415599ee21b926091.png)
![7ec385c8ae417c66c80e7785690ef83e.png](https://i-blog.csdnimg.cn/blog_migrate/24f431364e0b6633b7bef445a4ad7bbf.png)
![09cbb68209f4e89697bc337288d03ade.png](https://i-blog.csdnimg.cn/blog_migrate/bd14333389431920d2171533aabcc69d.png)
![7096454bb21314cdb1faaf9bf342ce6c.png](https://i-blog.csdnimg.cn/blog_migrate/1632579dd0021dca0efcf984eb16af07.png)
关注公众号,后台回复crackme,获得本题apk。
欢迎扫码关注,一起学习