继站长发帖的第一篇教程
(这是一篇没什么用的教程)
此篇仅供学习交流
少量的apk结构基础,MT逆向功能使用基础,smail语法基础,java语法基础即可畅读
可能还需要mt的会员功能()
修改按钮功能调用,我来解释一下:
首先,这是我自己用AIDE开发的软件
这是它的界面
这个界面有七个按钮,当我们按下第一个时会出现这样的toast提示
按下第二个按钮时会出现一个弹窗
我们要做的,就是要当按下第一个按钮时同样出现那样的弹窗。
介绍完了,开始操作
首先拿出移动端的安卓反编译神器:MT管理器
1.提取软件的安装包
2.拆包
3.打开软件的布局文件
能看到,两个按钮的id分别是B1和B2
4.用dex编辑器++打开所有的dex文件
5.随便点一个进去,复制它后面的资源ID
0x7f09009d
6.发起新搜索:0x7f09009d
7.发现在MainActivity类中,也出现了这个ID
(倒数第二行)
点进去看看,然后分析一下
如果你看不懂,建议先去其他地方学学基础
8.咋先不急着下手哈,把这个类转java再看看
底下那七行长得很整齐的 是那七个按钮的ID和 点下它们后调用的类
所以能看出来,第一个按钮调用的类名是
100000000
第二个按钮调用的类名是
100000001
(后面的不用看)
所以咋们只需要把第一个按钮调用的类改成
100000001
就可以了
具体做法就是替换"100000000"为"100000001"
返回smail代码,将以下代码:
` const v12, 0x7f09009d
invoke-virtual {v11, v12}, Lcom/mycompany/application/MainActivity;->findViewById(I)Landroid/view/View;
move-result-object v11
check-cast v11, Landroid/widget/Button;
move-object v3, v11
.line 66
move-object v11, v3
new-instance v12, Lcom/mycompany/application/MainActivity$100000000;
move-object/from16 v16, v12
move-object/from16 v12, v16
move-object/from16 v13, v16
move-object v14, v0
invoke-direct {v13, v14}, Lcom/mycompany/application/MainActivity$100000000;-><init>(Lcom/mycompany/application/MainActivity;)V
invoke-virtual {v11, v12}, Landroid/widget/Button;->setOnClickListener(Landroid/view/View$OnClickListener;)V
`
修改为
` const v12, 0x7f09009d
invoke-virtual {v11, v12}, Lcom/mycompany/application/MainActivity;->findViewById(I)Landroid/view/View;
move-result-object v11
check-cast v11, Landroid/widget/Button;
move-object v3, v11
.line 66
move-object v11, v3
new-instance v12, Lcom/mycompany/application/MainActivity$100000001;
move-object/from16 v16, v12
move-object/from16 v12, v16
move-object/from16 v13, v16
move-object v14, v0
invoke-direct {v13, v14}, Lcom/mycompany/application/MainActivity$100000001;-><init>(Lcom/mycompany/application/MainActivity;)V
invoke-virtual {v11, v12}, Landroid/widget/Button;->setOnClickListener(Landroid/view/View$OnClickListener;)V
`
这样就完成了
最后一步:一路保存返回,记得给软件重新签名
打包安装,然后打开软件看看效果
不管按下第一个还是第二个按钮,都会弹出这个弹窗
完