首页
论坛
课程
招聘
[讨论]手机端给apk文件添加AlertDialog
2013-12-16 15:49 4905

[讨论]手机端给apk文件添加AlertDialog

2013-12-16 15:49
4905
昨天有幸读到了 pc小波 的一篇文章
【原创】apk文件添加AlertDialog对话框

于是心想着能不能利用手机端的Dalivik字节码编辑器,通过比较APK修改前后的关键方法onCreate代码段的变化,来达到手机端添加AlertDialog的目的..

还是先以APK合金弹头为例 利用Dalivik字节码编辑器分别获取修改后的onCreate截图如下:

  

将全部代码复制出来 然后在对比软件对比结果如下:



其中添加的代码为:

new-instance v1 Landroid/app/AlertDialog$Builder;
invoke-direct {v1,v5} Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V
const-string v2 "普通对话框"
invoke-virtual {v1,v2} Landroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
const-string v2 "你好,Android!"
invoke-virtual {v1,v2} Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
invoke-virtual {v1} Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;
move-result-object v2
invoke-virtual {v2} Landroid/app/AlertDialog;->show()V


所以手机端利用Dalivik字节码编辑器手动给合金多弹头APK添加AlertDialog的流程可以为:
1、打开 AndoroidMainfest.xml 确定APK的 package 名,如com.kinglau.mslug;
2、根据包名 找到主Activity 所在的 class.dex 文件夹目录,如/com/kinglau/mslug;
3、找到MianActity文件 在onCreate方法代码段的return-void之上添加上面贴出的代码,保存APK后成功实现!

后续的试验了多个APK 只要适当修改第一句中

invoke-direct {v1,v5} Landroid/app/AlertDialog$Builder;-><init>


{V1,V5}  中“V5”的值即可...

个人不会Smali语法,“V5”是动态的实现的,如果能够通过某种方式获取 那么实现手机端一键添加自定义AlertDialog对话框即不难实现..

【公告】欢迎大家踊跃尝试高研班11月试题,挑战自己的极限!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 8849
活跃值: 活跃值 (777)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huangyalei 活跃值 2013-12-16 22:39
2
0
{v1, v5}  中“v5”换成“p0”即可,不用另外去获取
雪    币: 6
活跃值: 活跃值 (228)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
淡然出尘 活跃值 2013-12-16 23:49
3
0
不行啊  Dalvik字节码编辑器直接在保存时报错..
雪    币: 8849
活跃值: 活跃值 (777)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huangyalei 活跃值 2013-12-17 18:21
4
0
Dalvik字节码编辑器没用过,从截图上看寄存器用的是v命名法,所以对p命名法的p0是不支持的,你要找到作为this引用的寄存器,简单一点,iput或iget指令中的第2个寄存器就是你要找的。
游客
登录 | 注册 方可回帖
返回