在软件中添加弹窗 | 金条k的博客

LOADING

加载过慢请开启缓存 浏览器默认开启

若长时间无反应 可刷新后再尝试

在软件中添加弹窗

2023/7/21 Android逆向 原创

介绍

需要使用mt管理器进行修改操作,无需电脑操作,可将软件内添加弹窗

准备工具

0.一台手机
1.mt管理器
2.需要添加弹窗的软件(建议未加固的)

开始教学

第一步:提取需要添加弹窗的软件的APK安装包

1.打开mt管理器
2.点击左上角的三条杠进入菜单
3.在菜单中的工具分类中点击”安装包提取”
4.在里面点击需要添加弹窗的软件
5.点击”提取安装包”
1
6.提取成功后点击”定位”
此时你就进入了为/storage/emulated/0/MT2/apks/路径当中,在这里可以看到刚才的软件安装包

第二步:使用Activity记录记录软件的界面

1.再次点击左上角的三条杠进入菜单
2.在菜单中的工具分类中点击”Activity记录”
3.点击”启动服务”后跳转到辅助功能设置,在辅助功能中打开Activity记录
4.然后返回mt管理器再次点击”启动服务”开始记录界面
5.启动后迅速打开需要添加弹窗的软件,然后抓到你需要添加弹窗的页面
6.抓到后返回mt管理器,Activity记录中都增加了一些软件名称与com开头的页面名
7.点击你抓到的需要添加弹窗的页面与软件名称,复制页面名即可。
此时软件的界面名记录成功了,请注意不要抓错软件了,不然无效

第三步:开始在软件中添加弹窗

1.点击你第一步提取的安装包
2.点击查看
2
3.可以看到安装包中有很多文件,这是拆包后获取的
4.点击软件中的classes.dex文件或者dex格式的文件
5.点击Dex编辑器++
3
6.如果有多个dex格式文件的话,点击Dex编辑器++后再点全选,之后再点确定
4
7.在Dex编辑器++中点击”搜索”再在功能分类中点击发起新搜索
8.在搜索内容下填写你使用Activity记录记录的com开头的页面名,路径不用管,搜索类型为类名,最后点确定
5
9.搜索完成后,在功能分类中点击”在当前结果搜索”
10.查找内容为

Oncreat

搜索类型为方法名,最后点击确定
6
11.图文教学
7
12.将弹窗代码插入在”method public onCreate ……”的下行,看图片(弹窗代码放在最后)
8
13.最后返回,出现提示后点击确定,建议在选中自动签名
9
14.如果你没有选中签名,那么返回后,点击刚才的安装包,如果出现了签名状态出现检验不通过,那么按步骤,点击功能→APK签名→确定即可,签名完成后出现两个安装包,点击安装包如果签名校验通过就可以安装了!!!
15.点击安装后如果提示安装包签名不一致就点击确定,把原来的安装包给删除,否则无法安装,如果有重要数据建议备份,否则数据流失,卸载后重新安装即可
16.如果无法打开软件,可能为签名问题或dex修改出错,建议直接换个软件重试

弹窗代码

1.Toast提示弹窗

const-string v0, "这里填内容"
const/4 v1, 0x1
invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
move-result-object v0
invoke-virtual {v0}, Landroid/widget/Toast;->show()V

效果图:
10

2.弹窗+内容

new-instance v0, Landroid/app/AlertDialog$Builder;
invoke-direct {v0, p0}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V   
const-string v1, "这是内容"
invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;  
move-result-object v0
invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->show()Landroid/app/AlertDialog;

点击空白处即可取消,效果图:
11

3.弹窗+内容+标题

new-instance v0, Landroid/app/AlertDialog$Builder;
invoke-direct {v0, p0}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V
const-string v1, "标题"
invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
move-result-object v0
const-string v1, "这是内容"
invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
move-result-object v0
invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->show()Landroid/app/AlertDialog;

效果图:
12

4.弹窗+内容+标题+按钮

new-instance v0, Landroid/app/AlertDialog$Builder;

invoke-direct {v0, p0}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V

const-string v1, "标题"

invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;

move-result-object v0

const-string v1, "这是内容"

invoke-virtual {v0, v1}, Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;

move-result-object v0

const-string v1, "按钮"

const/4 v2, 0x0

invoke-virtual {v0, v1, v2}, Landroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;

move-result-object v0

invoke-virtual {v0}, Landroid/app/AlertDialog$Builder;->show()Landroid/app/AlertDialog;

演示图:
13

完结

你学废了吗?