逆向工程-对native层的一次简单逆向实践

  关注一款app很久了,这款app为了防止别人逆向破解拉取数据做了很多工作:

防止别人修改apk包,执行关键动作时对dex文件进行md5验证;

防止用户调用接口批量拉数据,对返回的web网页里个人信息进行加密,只有用户点击webview相关控件后,才js调用java代码通过jni调用底层native代码解密后,弹出toast显示个人信息;

  我按照逆向工程一贯的思路:

1. 先apk转化jar,查看jar代码,被混淆了,

2. 混淆只是最低级层次的防护,费点时间,主要逻辑点还是能看出来的,理清逻辑后开始反编译,smali文件插入自己的代码,重新打包运行,发现有些关键动作无法执行,失败;

3. 仔细研究才发现做了包校验;又接着看混淆后的代码,发现其网页解密是通过jni调用底层so文件,于是自己写一个android的demo,尝试调研so中解密方法,返回空串,失败;

4. ida 打开so文件,查看arm汇编代码,发现解密方法里也有包校验,于是修改so文件,绕过包校验,重新尝试调用,成功

 

所用工具:

anti-android:集成了dex2jar,jad,apktool

jd-gui

arm汇编查看机器码: http://bbs.pediy.com/showthread.php?p=1156571

ida pro

Winhex

 

你可能感兴趣的:(native)