Android 逆向工程介绍

tianzhidao

贡献于2014-08-31

字数:0 关键词: Android开发 移动开发

Android逆向工程介绍 鲶鱼团队 菜叶 日程 • Apk逆向 • Apk保护 • Q&A Apk逆向 为什么要逆向Apk? 汉化 注入 逆向技术 Apk逆向 • 逆向一个App无非两个目的: – 看 • 查看和分析目标APK的代码逻辑 – 干 • 修改目标APK文件(静态注入) 查看APK Apk文件结构 • AndroidManifest.xml • classes.dex 代码 • resources.arsc 值资源 • res/ 文件资源 • lib/ .so库 • assets/ 资产目录 • META-INF/ 存放签名 • com/ 其他目录 查看apk代码 - baksmali • 工具2:baksmali – 很精确地反编译出dex的汇编级代码 – 生成的smali文件可以再编译成dex文件 .dex .smali 二进制代码 文本代码 baksmali smali .dex 查看apk代码 - 工具对比 • 比较dex2jar + jd-gui 和 baksmali 的反编译效 果 反编译效果 dex2jar + jd-gui baksmali 可读性 .java文件,可读性好 .smali文件,可读性差 准确性 代码存在混乱和错误 精确无错 可逆性 无法再编译成原来的dex 可编译成原来的dex 适用性 适合了解整体框架(泛读,支持跳转) 适合了解局部实现(精读) 技巧 • 如何在启用混淆的apk中找到关键代码 – 原则:从混淆不了的代码入手 • 何处代码不能混淆?边界 – 方法: • 通过AndroidManifest.xml的四大组件找到代码入口 • 通过SDK Api 的调用,继承,实现 • 通过资源寻找到关联代码 – Tips: hierarchyviewer/monitor dex framework AndroidManifest.xml res 修改APK 修改apk - 流程 • 两种修改方式: 直接解包和利用apktool .jpg .png .so …. AndroidMenifext.xml res/*.xml classes.dex .jpg .png .so …. .xml .smali signapk 二进制文件 二进制 xml 二进制代码 文本 xml 文本代码 修改apk - 文件转换 • 二进制文件与文本文件的转换 AndroidMenifext.xml res/*.xml classes.dex .xml .smali 二进制 xml 二进制代码 文本 xml 文本代码 AXMLPrinter2 smali/baksmali smali 语法 • Java: com.tencent.mm.model.be.nS().a(this.edd); • Smali: invoke-static {}, Lcom/tencent/mm/model/be;->nS()Lcom/tencent/mm/model/al; move-result-object v0 iget-object v1, p0, Lcom/tencent/mm/ui/conversation/MainUI;->edd:Lcom/tencent/mm/model/am; invoke-interface {v0, v1}, Lcom/tencent/mm/model/al;->a(Lcom/tencent/mm/model/am;)V Apk重新签名 • java -jar signapk.jar key.x509.pem key.pk8 in.apk out.apk • 生成Key: development/tools/make_key 总结 • Apk反编译工具 – AXMLPrinter2.jar binary xml  xml – dex2jar & jd-gui .dex/.apk  .jar  .java – smali & baksmali .dex  .smali – Apktool .apk  .smali + res + ... – signapk.jar 给Apk签名 – Apk改之理 集成了以上所有功能 Apk改之理 思考 我会反编译别人的Apk 别人会不会反编译我的呢 ? Apk代码保护 为何要保护代码 • 防偷窥 • 防篡改 代码保护策略 • 代码混淆 • Apk伪加密 • 花指令 • SMC技术 • 信息隐藏 •… • 第三方方案:梆梆加固、爱加密 Apk伪加密 • 原理 – 设置ZIP包格式的加密位 花指令 • 原理 – 将数据和指令混合编排 SMC技术 • Self-Modifying Code – 编译后,修改byte code – 运行时,恢复byte code 信息隐藏 • 字符串隐藏 • 代码隐藏 总结 • APK逆向 – 如何查看 & 修改 Apk代码 – 逆向工具:smali, apktool,signapk, Apk改之理 … • APK保护 – Apk伪加密,花指令,SMC,信息隐藏… Q & A 谢谢大家 QQ群: 321150823 新浪博客:鲶鱼团队 微信公众号:鲶鱼

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 2 人已下载

下载文档

相关文档