一、目标
李老板:奋飞呀,给咱们开发Android App的程序员删库跑路了,明天投资人就要过来,咱们得把App换个图标和名字呀?
奋飞:这个得先把五一的加班费结一下。
二、步骤
拆包
Android App的安装包Apk文件本质上是一个zip压缩包,直接把后缀改成zip,就可以解压,然后修改完再压缩回去不就行了? 本文完……
现实是没有那么简单的,作为逆向工程师,必须要把 简单的事情复杂化,这样才能体现你的价值。
解压在我们这里不叫解压,叫拆开安装包,简称 拆包。是不是立马高大上了。
因为Apk的安装包有一些特殊处理,所以我们需要用特殊的工具去拆包 apktool
# d 拆包# f 待拆包的apk# o 输出拆包结果的文件夹apktool d -f example.apk -o tmp_apk_dir
修改文件
App的名字等字符串信息一般都是放在
.../tmp_apk_dir/res/values/strings.xml
这个xml文件里面
把 <string name="app_name">xx本子</string>
改成 <string name="app_name">李老板本子</string>
App的图标一般都是放在
tmp_apk_dir/res/mipmap-xhdpi/icon.png
其他的mipmap-xxx文件夹是不同分辨率下的图标,可以统统给他换了。
打包,签名
修改好了之后就可以用 apktool重新打包了
apktool b tmp_apk_dir -o unsigned_new.apk
签名文件是为了证明这个apk是你的,防止被别人篡改,所以咱们修改了apk之后,由于没有原始的签名文件,只能生成一个新的。keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias mykey
参数解释:
-keystore my-release-key.jks:生成的签名文件名。
-keyalg RSA:加密算法。
-keysize 2048:密钥长度。
-validity 10000:证书有效期(单位:天)。
-alias mykey:密钥别名,可自定义。
最后一步就是给重新打包的apk做签名了
apksigner sign --ks my-release-key.jks --ks-pass pass:fenfei --ks-key-alias mykey --out your_app_new.apk unsigned_new.apk
💡 TIPapksigner一般在你安装的android SDK里面 /Users/xxx/Library/Android/sdk/build-tools/34.0.0/apksigner
看上去没啥问题,不过我们细心的码农还是会启动验证一下,看看有没有问题。
坏蛋,果然给我们埋坑了。
过坑
跑路的程序员还是厚道,明明白白告诉咱们是由于签名被篡改了。
上jadx,搜索 签名被篡改
需要把这个 if判断干掉
问了一下AI,把对应的 Smail 代码中对应的 if-nez p1 改成 if-eqz p1 就行了
TIP:
| if-nez p1
| 如果 p1 != 0
,则跳转(非零成立) |
| if-eqz p1
| 如果 p1 == 0
,则跳转(零成立) |
真的没必要去学Smail语法了,现成的AI在嗷嗷待哺
三、总结
由于apk修改起来太容易了,所以程序员gg们会在里面埋更多的坑。加壳 反调试 混淆 前面还有无数困难等着你。
李老板决定还是招个程序员鼓励师比较靠谱。
非真空不宜谈禅,非真旷不宜饮酒。
💡 TIP本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331讨论下。
关注微信公众号,最新技术干货实时推送
手机查看不方便,可以网页看
http://91fans.com.cn
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...