Android逆向学习(十) IDA逆向编辑Android so文件

查看 110|回复 10
作者:Rytter   
Android逆向学习(十) IDA逆向编辑Android so文件
一、 写在前面
这是吾爱破解论坛正己大大的第10个教程
native code在我之前的博客中讲到过,所以这里就不讲了
简单来说,native code就是在android中使用c++或c语言进行开发
这样的话会给逆向带来一定的难度,所以本博客就是介绍如何解决这个问题
使用到的工具有:
vscode
IDA pro 9.0
二、 任务目标
打开挑战7,可以看到这次的任务是要打开这个大门,但是我们是不知道密钥的,所以可以明确我们的任务就是想办法获得这个密钥。


dea6433dd12eba1b8437c3663a5d120b.jpg (71.42 KB, 下载次数: 0)
下载附件
2025-5-14 15:01 上传

三、 实现方法
首先分析第七关的代码:


360bacc2810280bfc3d9aace652f295b.png (228.13 KB, 下载次数: 0)
下载附件
2025-5-14 15:01 上传

可以发现调用了lib中so文件,然后我测试用的手机是红米k30su,架构是arm64,所以就选择arm64-v8a文件夹下面的so文件
之后通过ida打开这个文件,查找名称为check的函数


657d11552bfa24729299a0c805af5741.png (20.29 KB, 下载次数: 0)
下载附件
2025-5-14 15:01 上传

大概就可以判断出check是进行判断的函数,只要对这个进行修改就可以了:
然后观察代码的样子,(这是我做完题目后又回过头写博客的,所以跟原版有点不一样,就是v7=strcmp(v6,v5) == 0可能本来是1来着)


39697612f559cac42179751dd1dbe1fd.png (78.32 KB, 下载次数: 0)
下载附件
2025-5-14 15:01 上传

我的第一个想法就是修改v7的判断,但实际上这种修改是有点问题
strcmp 返回 1 并不等于“不相等”这么简单,它只是在字典顺序上 str1 > str2 的情况下才返回 1。
查看汇编代码会发现实际上是这样的:


a9dad22e8b430e27860cb0e5161edad3.png (129.46 KB, 下载次数: 0)
下载附件
2025-5-14 15:01 上传

W22会保存最终的返回值,只要这个返回值永远是true就可以了,说干就干


7e833fd3dd313d398cf406a9b6c96a5c.png (260.16 KB, 下载次数: 0)
下载附件
2025-5-14 15:01 上传

选中CSET 然后点击上图中的Changebyte


fa3de15a2fcca243deedea456f64cb27.png (46.68 KB, 下载次数: 0)
下载附件
2025-5-14 15:01 上传

这就是16进制的字节码,然后复制到这个网站
https://armconverter.com/
这个网站是字节码转汇编的网站


831b47bd2e4acb30955c0cfbadd6e908.png (60.98 KB, 下载次数: 0)
下载附件
2025-5-14 15:01 上传

之后修改这个代码,将cset w22,eq转化称mov w22,#1,就可以永远返回为真,这时候有变出现ARM64的字节码,然后复制这个字节码,粘贴回去


ea8405c5df49423528b5225e9f203e75.png (60.57 KB, 下载次数: 0)
下载附件
2025-5-14 15:00 上传

粘贴回去就会发现代码变了:


48fb615ffda49b5b55788bbac86d5426.png (53.41 KB, 下载次数: 0)
下载附件
2025-5-14 15:00 上传



ac24a11cb66915f4f8d4c815ef8b82bc.png (42.17 KB, 下载次数: 0)
下载附件
2025-5-14 15:00 上传

然后保存打包就可以了
保存就是ctrl+s
打包就是点击下面的apply


0b9da4389594d2f1d6439961dc5a63cb.png (278.59 KB, 下载次数: 0)
下载附件
2025-5-14 15:00 上传



45d5c1b9bfb7feb5471c614f61d8a2f5.png (56.69 KB, 下载次数: 0)
下载附件
2025-5-14 15:00 上传

然后通过逆向的重打包功能就可以重新运行:
右键apktool.yml然后选择APKLab:Rebuild and Install the APK,就可以重新安装了


02a6aa53baf6b015ba468c7f2a316edb.png (162.49 KB, 下载次数: 0)
下载附件
2025-5-14 15:00 上传

最后的效果就是这样,点击就可以显示进入密界了(为了好玩我把图片换成了虎哥一眼万年的图片)


a7330ab75084c9a54d3bf17a702ace91.png (318.46 KB, 下载次数: 0)
下载附件
2025-5-14 15:01 上传

下载次数, 下载附件

Rytter
OP
  


柠初呀 发表于 2025-5-16 11:06
有挑战链接吗,刚来,发现他的帖子太多了,找不到,或者有关键字吗,谢谢!

https://www.52pojie.cn/thread-1838539-1-1.html,打开下面的百度网盘链接,第16节文件夹下面有apk
wjl999   

大佬太强了,等着试试
chenkeai深蓝   

大佬又s又强,真是遭不住
Dlian   

大佬又s又强,真是遭不住
7001   

先学习下。
现在很多带签名了。
WXjzc   

学到了,但是这并没有完成目标呀?目标是获取密钥,而不是进入第二个页面
Rytter
OP
  


WXjzc 发表于 2025-5-15 17:44
学到了,但是这并没有完成目标呀?目标是获取密钥,而不是进入第二个页面

不好意思忽略了这个问题,我是傻子,之后会想办法补上
yiluoen0502   

谢谢分享
mychose   

大佬又s又强,真是遭不住
您需要登录后才可以回帖 登录 | 立即注册

返回顶部