如何对反编译的安卓应用进行调试并修改

  • 安卓修改大师可以在没有源代码的情况下,直接反编译已经打包的APK安装包,通过修改SMALI代码实现添加和去除部分功能,并在应用的任何地方添加任意代码,增加任意任何您想实现的功能。通过这种方式,把该应用变为您自己的应用(通过安卓修改大师反编译生成的新应用仅供个人学习反编译知识,严禁用于商业用途)。
  • 大部分情况下,通过安卓修改大师反编译打包的应用都可以正常运行。如果您不幸遇到打包的程序运行崩溃,您必须要借助SMALI代码调试功能来定位错误源头。通过调试smali也可以跟踪破解或者游戏通关的逻辑。
  • 通常通过Android studio配合安卓修改大师进行SMALI动态调试(您也可以用Eclipse),下面是调试环境的配置和具体的动态调试方法。
  • 如何对反编译的安卓应用进行调试并修改

          

准备工作

JesusFreke/smalidea/Downloads—Bitbucket 下载smalidea-0.05.zip

https://dl.google.com/dl/android/studio/install/3.5.2.0/android-studio-ide-191.5977832-windows.exe下载 Android Studio 3.5.2

通过 安卓修改大师/工具箱/网络抓包/下载.. 下载本次用来调试的示例apk

安装Android Studio和smalidea

  • 安装Android Studio 3.5.2,更新和配置环境
  • 打开菜单 File/Settings/Plugins,右上角的设置图标打开Install plugins from disk,安装smalidea。然后重启集成开发环境。
  • 安卓修改大师/工具/参数配置/Android studio程序路径设置,配置安装的Android Studio3.5.2的程序路径到安卓修改大师。

详细调试步骤

将上述下载的测试调试的apk拖拽到修改大师界面进行反编译

底部连接真机或者雷电9,以便查看调试状态,建议雷电9打开root模式,方便调试。

反编译/打包签名/打包参数/打包类型,选择调试安装包的打包模式。反编译/打包签名/打包结果选项,去掉卸载并安装的勾选,方便调试。

反编译/打包签名/外部打开编辑/用Android Studio打开编辑,打开的Android Studio将打开Smali项目,注意右下角弹出Config的弹窗,要选择允许配置。然后左上角切换到project的模式。

添加调试断点:预设一个调试场景,本次调试是为了找到启动弹窗,通过Edit/Find/Find in Path搜索所有的AlertDialog;->show()V,点击左侧添加断点。

反编译/打包签名/项目打包,打包完毕后,会自动安装到设备上。设备上面可以看到调试窗口提示。Android studio右上角点击带箭头的虫子图标,即可开始调试。

调试会自动命中设置的断点,并查看每个字段变量的值。利用这种方式,可以在预知某个字段或者方法的情况下,通过设置断点来找到代码位置,并通过修改变量实现改变运行结果。

小实验:尝试修改弹出窗口内容。尝试去掉弹出窗口。

附件:经常用到的调试断点关键字

AlertDialog;->show()V 提示信息弹窗,去掉弹窗或者改弹窗内容会用到
ProgressDialog;->show()V 显示进度条
/Dialog;->show()V  弹出自定义窗口
signatures:[Landroid/content/pm/Signature; 获取签名,去掉签名判断用到
VersionInfo;->versionCode:I 获取版本号,去掉版本更新会用到
JSONObject;->toString(I)Ljava/lang/String;  接口返回解析json
…其他的触类旁通

如何对反编译的安卓应用进行调试

1、      所需工具
①Android Studio最新版,下载地址:请自行百度下载
②Smalidea插件,下载地址:smalidea-0.05.zip

2、      Smalidea插件配置步骤
安装并运行Android studio,然后在Android studio顶部菜单中选择File->Settings->Plugins,安装之前下载的Smalidea插件。

https://images2015.cnblogs.com/blog/282719/201606/282719-20160616220413854-617943589.png

3、打调试安装包并运行

在打包签名窗口,选择调试安装包选项,按照向导进行打包,该方式所打的安装包包含调试信息,可以通过Android Studio进行Smali代码的动态调试。

请注意,该窗口会显示调试端口和调试地址,在后续的Android Studio参数配置中,会用到这两个参数。调试地址就是反编译的项目地址,您可以在本窗口点击后面的复制按钮直接复制。

打包完成后,根据向导提示安装到手机上。注意窗口底部的USB连接状态的提示,请先将您的手机打开调试模式,并连接到电脑,点击安卓修改大师底部的刷新按钮,确保您的手机和安卓修改大师保持连接状态。

调试包安装到手机后,您就可以打开Android Studio进行动态调试了。

安装包安装到手机上后,在手机上将会出现下图的等待调试的窗口,请不要关闭该窗口,只有在该窗口打开的情况下,才能进行Smali动态调试。

4、配置Android studio进行调试 

打开Android Studio,选择Import Project(见下图),也可以在打开的Android Studio中点击顶部的菜单(File/New/Import Project..),然后选择之前强调的调试目录,如图所示:

https://images2015.cnblogs.com/blog/282719/201606/282719-20160616220644167-1801955265.png

然后选择Create project from existing sources,之后一直选择next。
 

https://images2015.cnblogs.com/blog/282719/201606/282719-20160616220711745-239639306.png

           
成功导入工程后右键点击 Smali目录,设定Mark Directory As->Sources Root
 


配置远程调试的选项,选择Run-->Edit Configurations:
 

https://images2015.cnblogs.com/blog/282719/201606/282719-20160616220921667-1473804168.png

 
增加一个Remote调试的调试选项(如果看不到Remote调试选项,请点击左上角的绿色加号添加Remote调试选项),端口选择:8700
 

https://images2015.cnblogs.com/blog/282719/201606/282719-20160616220939667-429384959.png

    

设置端口号 8700    

https://images2015.cnblogs.com/blog/282719/201606/282719-20160616220957526-1101324191.png

   

之后选择File-->Project Structure 配置JDK    

https://images2015.cnblogs.com/blog/282719/201606/282719-20160616221015338-1600841699.png

           

JDK设置为1.8以上
 

https://images2015.cnblogs.com/blog/282719/201606/282719-20160616221109120-1445199850.png

        
下好断点之后Run->Debug,  
 

https://images2015.cnblogs.com/blog/282719/201606/282719-20160616221208776-173578043.png

             
稍等几秒,断点触发后就可以单步调试      

https://images2015.cnblogs.com/blog/282719/201606/282719-20160616221228995-47769053.png

         针对运行闪退方面的问题,重点调试入口Activity和Application类(见安卓修改大师源代码修改/程序入口对应的类)的OnCreate,OnResume和类的初始化方法。在调试开始行的左侧,行数字的右侧点击,放置调试点。

       然后就可以通过顶部的Run菜单提供的调试命令进行调试了,一般是通过设置调试点后,点击顶部的调试按钮开始调试,通过不断的按F8逐行调试,观察运行到那一行报错,根据错误有针对性的修改代码或者删除代码行来解决问题。

例如,某个应用运行闪退,通过调试发现只要运行到下图的这一行立刻崩溃,通过删除这一行或者在这一行前面添加一个#号注释该行,保存后,在安卓修改大师重新打包,App即可正常运行了。 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值