App弹窗注入是App逆向过程中经常用到的技术,一般用于云公告、引流等目的。
原理呢也比较简单,就是将需要注入的功能先写成个App,然后打包后提取其中有用的dex合并到待注入的apk中,然后在待注入的apk中dex合适的位置注入代码调用即可。
现在市面上有很多一键自动注入注册机/引流弹窗的的软件,说实话确实不错,如arm、小纸片等。不过大多都收费,且对有的软件兼容性不是很好。同时,不能充分自定义。且当我用付费的arm一键注入弹窗后发现软件闪退时,突然就想自己做一个,虽然不是自动注入,但也可以满足基本需要。
此个性化云弹窗特点:
- 代码混淆,包名隐蔽
- dex字符串加密,云配置加密
- 原生实现,轻量兼容
- 高个性化配置
- 支持html
- 多事件类型支持,加群、网页、scheme
示例截图

Github传送门
如需拓展或修改功能,可通过如上github获取源码后修改。
配置说明:
json字段 | 类型 | 含义 | 备注 |
gg | boolean | 是否显示弹窗 | |
title | String | 标题文本 | 为空时不显示标题 |
titleColor | String | 标题文本颜色 | 示例:#ff0000 |
message | String | 内容文本 | 仅messageHtml不为空时有效 |
messageColor | String | 内容文本颜色 | 示例:#2b2b2b |
messageHtml | String | 内容Html | 为空时显示message文本,messageColor有效 |
cancelable | boolean | 是否可取消 | 为true时点击弹窗外部或返回时可关闭弹窗,反之 |
confirmText | String | 确定按钮文本 | 为空时不显示确定按钮 |
confirmColor | String | 确定按钮文本颜色 | 示例:#00faff |
cancelText | String | 取消按钮文本 | 为空时不显示取消按钮 |
cancelColor | String | 取消按钮文本颜色 | 示例:#f44336 |
confirmEvent | int | 确定按钮事件类型 | 0 关闭弹窗 1 打开网页(url字段)但不关闭弹窗 2 加群(key字段)但不关闭弹窗 10 打开网页(url字段)并关闭弹窗 20 加群(key字段)并关闭弹窗 -1 退出软件 |
cancelEvent | int | 取消按钮事件类型 | 同上 |
url | String | 要跳转的网页地址或scheme地址url | 示例:http://baidu.com |
key | String | qq群key | 可从qun.qq.com的加群组件获取 |
下载
Demo(下载)
Demo中提供了加解密功能和弹窗测试功能,以方便使用者测试和使用。
注入Dex(下载示例)
Dex可通过Demo提取,使用时请自行分析并修改云配置地址的加密字符串。
如需使用,建议自行分析代码修改加解密密钥或自行下载Github源码重新修改编译使用。如通过修改源码重新编译打包,可通过混淆配置清单的-repackageclasses将编译混淆的类同意打包在自定义的包名下。
调用代码
#java
new com.android.system.a.b().g(context);
#smali
new-instance v0, Lcom/android/system/a/b;
invoke-direct {v0}, Lcom/android/system/a/b;-><init>()V
invoke-virtual {v0, p1}, Lcom/android/system/a/b;->g(Landroid/content/Context;)V
注意事项
使用html内容时,建议将messageHtml的html代码中描述颜色的16进制字符串修改为rgb串。否则,部分机型无法正常显示html。如将<font color=”#ff0000″></font>或<font style=”color:#ff0000″></font>修改为<font style=”color:rgb(255,0,0)”></font>
json内的子字符串中的”需注意转义,否则json解析失败无法正常弹出弹窗。
发表评论