1. App Name
取一个跟之前不一样的就行,建议拿到名字上相关网站搜一下,同名是否多,尤其是有存在且对方已做商标保护的,那就更加不要同名了
参考:
apkcombo.com/zh/
2. 包名
同样,取一个跟之前不一样的
同时,比如公司名称简称sl,建议包名中就不要有sl了
eg:com.sl.appname 此类就不建议
3. Logo
设计一个新的即可
4. 签名
重新生成一个新jks文件、密码和名称都变更下,与之前的不要有关联
比如公司名称简称sl,建议jks中就不要有sl了
5. 域名
买一个新的域名使用,一个app一个单独域名
6. 项目结构目录
调整下结构目录,比如名称、嵌套顺序等
7. 文件名(类名、布局文件名、资源文件名)
修改所有的类名、布局文件名、资源文件名
8. 如果有相应的依赖Module
也做包名、项目结构目录、文件名调整
9. UI
尤其是启动页、首页、尽量重新设计,主题色最好与之前有较大变化
10. 图标
图标的文件名必须全部修改
单纯修改文件名,一个文件的md5其实不会变,需要修改文件的内容
还可以对图片进行压缩、格式转换,png convert to webp
or webp convert to png
11. 布局文件的控件id
比如之前是btn_login,调整为btn_submit等
12. 布局文件的控件类型
比如之前是LinearLayout,调整为androidx.appcompat.widget.LinearLayoutCompat
比如之前是TextView,调整为androidx.appcompat.widget.AppCompatTextView
13.strings.xml
比如之前是
<string name="log_pwd" translatable="false">Password</string>
<string name="log_title_pwd">Password</string>
14. 代码混淆
可参考1:github.com/king-ma1993…
建议对bt-proguard.txt内容进行相应替换,每个app保证混淆的内容不一样即可
Android超级变态的混淆词典
常规abcd等混淆方式对逆向的干扰程序并不是很大,所以需要一个变态的字典,使用方法如下:
在proguard-rules.pro文件中进行配置
-obfuscationdictionary bt-proguard.txt
-classobfuscationdictionary bt-proguard.txt
-packageobfuscationdictionary bt-proguard.txt
可参考2:github.com/bytedance/A…
对aab包的资源处理
15. ARouter
如果使用了ARouter 路由框架,建议做相应修改
比如之前路由表
const val HOME: String = "/app/home"
const val INDEX: String = "/newapp/index"
16. 接口映射
比如之前登录接口是
@POST("sl/app/login")
suspend fun login(@Body params: HashMap<String, String>): NetResult<LoginResultEntity>
@POST("ax/FEW/MQx")
suspend fun loginInter(@Body params: HashMap<String, String>): BaseResult<LoginEntity>
可以看到有几个变化
1、接口请求的具体地址变了
2、请求返回的NetResult变了
3、请求返回的实体名称也变了
4、接口请求的方法名也变了
如果内部有多个app,每个app生成的具体请求地址都是不一样的
同时每个app都有相应的请求头
比如之前是
val map = HashMap<String, String>()
map["appName"] = "AppName"
val map = HashMap<String, String>()
map["xAfew"] = "AppName"
最后再进行加密
17. 未混淆的类(实体类等)
比如之前是
data class LoginResultEntity(
val token: String? = "",
val avatar: String? = ""
1、名称变更
2、增加垃圾字段
data class LoginEntity(
val a="",
val b="",
val token: String? = "",
val avatar: String? = "",
val c=""
18. 垃圾代码
加点垃圾代码
可参考:github.com/qq549631030…
唯一注意的是,混淆对相应垃圾代码保持不被混淆
19. 变量、方法名
大部分的变量和方法在混淆都是被重命名的
尤其注意的是打包的aab文件中,没有被重名的,进行相应修改
可通过工具 jadx-gui 进行查看
20. 三方库
相关三方库升级、或者用其他相关库替换
21. 三方SDK key
关于使用的一些三方SDK
比如AppFlyer,新建一个App 会有一个dev key,App Flyer 默认每个app 的 dev key都是一样的,可联系对应商户更改
22. XmlClassGuard
https: