144

安卓Apk反编译修改方法

前言

本次修改中主要用到的工具:

工具用途
夜神模拟器用于安装MT管理器、Apk包、配合Fiddler抓包等
Fiddler用于抓包、拦截Apk请求等
MT管理器查看apk是否加固;解包资源;打包资源;签名等
jadx-gui用于打开apk或classes.dex等文件,可用于字符串搜索(但.bytes中字符串无法搜索到)
BlackDex脱壳程序,如果Apk存在加固,可以用该软件尝试脱壳
UABEA用于查看 .ab 文件,由于某些配置项存放在二进制文件中,用字符串搜索不到,所以用该工具进行查看和修改
baksmali用于将dex文件解包为smali文件
smali用于将smali文件打包为dex文件
JDKjadx、jar工具等需要JDK,自行安装配置

Fiddler抓包分析

软件配置

参考文章 雷电模拟器的Fiddler抓包配置全过程 进行配置完成后,即可抓取到模拟器中的所有请求

请求拦截

点击工具栏 Tools -> Customize Rules

找到 OnBeforeRequest 函数,在函数中加入代码进行请求拦截,例如:

if( oSession.host=="192.168.1.100:8001" ){
    oSession.host="192.168.1.200:8002";
}

参考文章

jadx查看APK

打开jadx-gui会要求安装JDK,软件会自动打开JDK官方下载地址,下载安装即可。

在jadx-gui中可直接打开apk安装包,也可以单独打开某个classes.dex。

这里主要利用jadx-gui的字符串搜索功能,进行一些比较明显的字符搜索,可以尝试所有软件中的提示信息、弹窗信息、抓包中的请求地址等。

另外,jadx-gui还可以动态调试apk,以及配合Frida进行hook调试,参考:jadx动态调试安卓apk

MT解包APK

直接安装MT管理器官方版即可,在MT管理器中,点击apk包,查看是否加固。

在apk信息界面中点查看按钮,进入apk包内,长按需要解包的文件,点击解压->按钮,将文件解压到右侧目录中。例如:

  • assets目录
  • classes.dex文件等

修改资源文件

修改文件

本次主要修改了 assets/Config_dodsdk.bytesassets/Config_dyxsb.bytesassets/urlConfig.jsonassets/ab/assets_resources_config_platforminfo.bytes.ab 文件,更改文件中的服务器地址信息

修改代码文件

修改文件

本次主要修改了com/dodjoy/dodsdk/api/DodCoreConfig.smali文件,更改文件中的服务器地址信息

该文件存在于dex代码文件中,所以需要利用工具将dex反编译为smali文件,再进行修改。

smali/baksmali,是dex格式文件与smali文件的转换工具

反编译dex

java -jar baksmali.jar d classes.dex

该命令会在运行目录下创建一个out文件夹,生成所有对应的smali文件。

编译smali

java -jar smali.jar a out

该命令会将运行目录下out文件夹中的smali文件,编译为out.dex文件

MT打包APK

在MT管理器右侧目录中,长按需要打包进apk内的文件,点击<-添加按钮,将所有修改的文件替换完毕后,左侧目录返回到apk存放目录。

MT签名APK

点击apk文件,在弹出的界面中,点击功能按钮,点击APK签名按钮,即可完成APK签名。

其他参考

文章作者:DOTATONG
发布日期:2024-12-19

评论

暂无

添加新评论