叨嗒嗵 - smali
type: channel
link: https://dotatong.cn/index.php/tag/smali/
items: 安卓Apk反编译修改方法

安卓Apk反编译修改方法
type: item
date: 2024-12-19T02:21:00+00:00
description: 前言本次修改中主要用到的工具：工具用途夜神模拟器用于安装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"; }参考文章Fiddler之修改请求或响应Fiddler高级调试技巧：自定义响应规则与断点设置jadx查看APK打开jadx-gui会要求安装JDK，软件会自动打开JDK官方下载地址，下载安装即可。在jadx-gui中可直接打开apk安装包，也可以单独打开某个classes.dex。这里主要利用jadx-gui的字符串搜索功能，进行一些比较明显的字符搜索，可以尝试所有软件中的提示信息、弹窗信息、抓包中的请求地址等。另外，jadx-gui还可以动态调试apk，以及配合Frida进行hook调试，参考：jadx动态调试安卓apkMT解包APK直接安装MT管理器官方版即可，在MT管理器中，点击apk包，查看是否加固。在apk信息界面中点查看按钮，进入apk包内，长按需要解包的文件，点击解压->按钮，将文件解压到右侧目录中。例如：assets目录classes.dex文件等修改资源文件修改文件本次主要修改了 assets/Config_dodsdk.bytes 、 assets/Config_dyxsb.bytes 、assets/urlConfig.json 、 assets/ab/assets_resources_config_platforminfo.bytes.ab 文件，更改文件中的服务器地址信息修改代码文件修改文件本次主要修改了com/dodjoy/dodsdk/api/DodCoreConfig.smali文件，更改文件中的服务器地址信息该文件存在于dex代码文件中，所以需要利用工具将dex反编译为smali文件，再进行修改。smali/baksmali，是dex格式文件与smali文件的转换工具反编译dexjava -jar baksmali.jar d classes.dex该命令会在运行目录下创建一个out文件夹，生成所有对应的smali文件。编译smalijava -jar smali.jar a out该命令会将运行目录下out文件夹中的smali文件，编译为out.dex文件MT打包APK在MT管理器右侧目录中，长按需要打包进apk内的文件，点击<-添加按钮，将所有修改的文件替换完毕后，左侧目录返回到apk存放目录。MT签名APK点击apk文件，在弹出的界面中，点击功能按钮，点击APK签名按钮，即可完成APK签名。其他参考反混淆脱壳及抓包激活app全过程APK逆向分析入门-app脱壳MT管理器使用教程