逆向工程-对native层的一次简单逆向实践
2014-09-10 10:14
344 查看
关注一款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
防止别人修改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层的一次简单逆向实践
- CMake之简单工程实践
- 【读书笔记】iOS应用逆向工程-分析与实践(第二章)
- IDEA 中生成 MyBatis 逆向工程实践
- 记一次逆向工程作业(汇编windows编程)
- 在IDEA中使用MyBatis Generator逆向工程生成代码 实践
- [一个简单的.NET逆向工程]给没有源代码的.NET程序打补丁
- iOS逆向工程(简单利用"dumpdecrypted"给ipa砸壳)
- 记一次简单的逆向
- MyBatis逆向工程——MyBatis Generator (MBG)-简单介绍与运行步骤(1)
- 【读书笔记】iOS应用逆向工程-分析与实践(第三章)1
- Android安全–一次简单的脱壳Dump dex实践
- CMake之简单工程实践
- IDEA 中生成 MyBatis 逆向工程实践
- 简单谈谈mybatis逆向工程
- 【读书笔记】iOS应用逆向工程-分析与实践(第一章)
- iOS逆向工程(简单利用"dumpdecrypted"给ipa砸壳)
- 生成Mybatis逆向工程【简单实例】
- 一次最简单的API编程与其逆向
- IDEA 中生成 MyBatis 逆向工程实践