我花了大量的私人时间替专案研究 App 是否混淆成功,混淆结果是否达到需求。虽然我只会做简单的反组译跟实际上能达到商业需求的程度相比根本不值得一提,不过我还是想将笔记与大家分享,因此看完此篇而做任何事情与我本人无关,不过还是希望不要做违法的事情。
根据Shrink, obfuscate, and optimize your app文章,启用 minifyEnabled 可以缩小、优化 App 顺便混淆程序码。
要检验 minifyEnabled
启用,就得反组译 App。
未启用(未混淆) | 启用(混淆) |
---|---|
根据上图可以发现未启用的程序码一览无遗,而启用後的程序码、Package、Path、Class、Method、Field 都被英文字母取代
取得 Apk 有3种方式
手机端系统
取得第三方解析
。ex.apkpure
开发者端打包
取得把 Apk 副档名改成 Zip 副档名,并解压缩取 classes.dex
为什麽需要再次打包成 Jar 档? 为了阅读 smali 代码
根据 Android App 反组译流程(上) 文章表示
关於 Smali ,在 Android 官网中并无相关介绍,它应该出自 JesusFreke 的开源项目 smali。smali/baksmali 是针对 dalvik 使用的 dex 格式的汇编/反汇编器。它的语法基於 Jasmin's/dedexer,支持 dex 格式的所有功能(注释,调试信息,行信息等等)。因此我们可以认为 smali 和 Dalvik 字节码文件是等价的。事实上,Apktool 也正是调用这个工程生成的 jar 包来进行反编译生成 smali 代码的。对生成的 smali 代码进行修改之後再重打包,就可以修改 apk 中的逻辑了。因此,能阅读 smali 代码对我们进行 android 逆向十分重要。
d2j-dex2jar classes.dex
网路上看到的资源都是使用 dex2jar-2.0 而不是 dex-tools-2.1-SNAPSHOT耶?
这两个是一样的东西,都是 pxb1988 的开源,我会使用 dex-tools-2.1-SNAPSHOT 是因为在使用 dex2jar-2.0 时发生错误。
为什麽不能直接解压缩 Jar 看呢? 因为有加密
使用 JD-GUI 观赏 Jar
Blog
Android
逆向工程
<<: Apple Music vs Spotify 优缺点比较:哪个更好?
接下来我们就要进入Lab2的环节了,我们不会只像Lab只实作了简单的单机储存系统,我们会有API层、...
什麽是 Chain of Responsibility? 将 if...else 的行为抽象成物件,...
新章 突入! 终於进入到期待已久的第二章 Design System 啦! 那在讲 Design ...
Scrum是大家想要导入的文化与工具,在分享了很多工具、体会和方法後,感觉是个好时机要来讲如何导入s...
嗨,大家好。参加这个竞赛,很单纯的事因为朋友的邀请。 在参赛之前,有大概浏览了十来页的自我挑战文章...