35+ stories, thoughts and ideas.35+ stories, thoughts and ideas.


stories, thoughts and ideas.

反编译Android APP实战一例(360/腾讯加固)

360或者腾讯加固工具加固过的Android APP,不能直接反编译,本文提供全套的实战流程。工具截止2020年底可反编译360加固或者腾讯加固的免费版本加固后的APP,其他加固工具需要你自己尝试是否可用。

起因

正在使用的一款app,做的内容挺好的,就是中间弹广告及其难受,其频繁程度令人发指,基本上达到无法正常使用的地步,而且还不能碰,假的X号,碰一下立即在后台下载安装抖音。闲来无事,起了破解去广告之心。

工具准备

  • 一台已经root的android旧手机,建议使用android 6.0或者7.0 ,更高或者更低版本可能导致某些破解软件不能正常工作,安装好xposed框架。
  • FDex2:用来绕开加固获取dex文件
  • httpcanary(可选):用于监听分析app 网络请求
  • apktool:反编译工具
  • signapk:重新签名

如果你懂java,还可能用到下面工具

  • dex2jar:apk反编译为jar
  • jd-gui:jar反编译为java文件
  • android sdk
  • android studio或者eclipse

反编译步骤

  1. 安装目标应用
  2. FDex2选择HOOK目标
  3. 运行目标应用
  4. 在/data/user/0/APP_NAME/目录下找到dex文件,可能有多个,命名一般为<APP_NAME><包大小>.dex
  5. 部分360或者腾讯加固工具加固过的APP,使用FDEX2得到的DEX文件,部分情况会出现DEX文件无法被反编译,提示为无效的DEX文件,请参考以下方法处理。
此问题一般是由于DEX文件的前数个字节被置为0,正常的DEX文件前几个字节为
64 65 78 0A 30 33 35
解决方案是使用 beyond compare,用一个正常DEX文件和无效文件比较,把无效文件前几个置0的字节内容从正常文件复制过来即可解决。
  1. 把dex文件改名为classes[0-N].dex,合入APK文件内。

img

  1. 使用apktool反编译apk

    apktool.bat d APP_NAME.apk
  2. 分析xml和smali代码,修改对应代码,另外可以转换成jar使用java阅读和修改代码。
  3. 重新编译打包apk

    apktool.bat b APP_NAME/
  4. 重新签名apk
  5. 测试

JAVA代码修改步骤

smali 代码比较晦涩难懂,比较大的修改还得用java,一般情况下反编译出得java代码,无法重新编译打包,因此我们将需要修改得函数修改后,生成新的smali代码覆盖原有smali函数代码。

  1. 使用dex2jar得到jar包APP_NAME_dex2jar.jar
  2. 使用jd-gui打开java包,得到源代码

    重点:如果你希望分析的代码无法反编译,出现//INTERNER ERROR的信息,使用不同版本的jd-gui反编译代码可能有惊喜,经验表明低版本的jd-gui更好用

  3. 在eclipse新建项目,导入android.jar和APP_NAME_dex2jar.jar作为依赖库,只把需要修改的java代码放入src目录中。
  4. 修改函数,重新编译,或者使用命令行编译,示例如下:

    javac -cp "..\..\platforms\android-19\android.jar;APP_NAME_dex2jar.jar;" -Xlint:unchecked WantToModify.java
  5. 使用编译后的class文件生成一个新的dex文件

    dx.bat  --dex --output=classes_new.dex  .\com\PKG_PATH\WantToModify.class
  6. 使用apktool反编译得到想要得smali代码,覆盖需要修改的地方
本原创文章未经允许不得转载 | 当前页面:35+ stories, thoughts and ideas. » 反编译Android APP实战一例(360/腾讯加固)

评论