〖实战教程〗新版51虚拟机 ROM包校验原理 反ollvm字符串混淆 ->终

查看 161|回复 10
作者:芽衣   
去年的旧版请看这里:https://www.52pojie.cn/thread-1317121-1-1.html,本帖51虚拟机基于最新版1.3.0.9.02。
现在新版有个问题就是卡虚拟机启动,原理和x8沙箱一样,怎么找卡哪里我就不重复教学了。
https://www.52pojie.cn/thread-1441372-1-1.html

*本次仅做逆向示范,没有成品,后续也不再更新新版方法。
*51虚拟机整体逆向难度我认为属于中高水平。因为有不少人问过这个,ROM保护也比较少见,至少1.2.0以后没再有破解版。
[color=]准备工具
1、IDA64
2、010编辑器
前几天发了个x8沙箱教程,elf文件是经过ollvm混淆的,而且v2签名能过,所以我就没进行反混淆。但是51虚拟机好像不行,于是我对servicemanager进行反混淆后就可以看见所有的字符串了。本次仅用51虚拟机介绍如何反so混淆,破解方面请自行分析,如果你不了解安卓ROM的安装与启动原理,大概率是没有办法回填文件的。

新版软件的rom签名校验应该不止一个地方,安卓框架下我随便搜了md5就发现了2处,bin文件夹下的以servicemanager为例,这个文件也藏了签名md5。
IDA加载elf文件完毕后打开字符串窗口,拉到底,这些乱七八糟的的字符串就是被ollvm混淆导致的,既然有混淆就会有还原,这些字符串相当于密文,密钥就藏在某个地方,找到密钥和算法后就可以还原了。


1.png (75.78 KB, 下载次数: 0)
下载附件
2021-5-20 14:56 上传



1.png (41.49 KB, 下载次数: 0)
下载附件
2021-5-20 15:05 上传

如上图,8LKHLKKJJ;J就是签名md5,那段汇编就是把获取到的签名值和so中的签名值进行对比,原型
strcmp
(const char *
[color=]s1
,const char *
[color=]s2
[color=])
,相等返回0,不相等返回其它数。过签名校验的思路是把自己的签名值加密后填回去,或者改rsa路径都是可以的。改汇编也可以但是难度较大,新手不建议尝试。

接下来对这些混淆的字符串进行还原,现在祭出16进制编辑神器
010编辑器
。然后搜索字符串r920s;l-1
1.png (117.48 KB, 下载次数: 0)
下载附件
2021-5-20 15:14 上传

在这个区域内,00为结束,所以一般一个连续的字符串是不会有00出现的。一般ollvm默认的加密规则就是对字符串进行异或运算,密钥就是密文的最后一位数(不是所有的字符串加密都是这个方法)。
比如下图中的
7C73796F72747933726E33544E786F6B747E78507C737C7A786F
[color=]1D
,密钥就是1D。


1.png (68.23 KB, 下载次数: 0)
下载附件
2021-5-20 15:21 上传

点击菜单栏的
[color=]工具
——>
16进制运算
——>
[color=]二进制异或
——>
[color=]无符号字节
,操作数填入密钥,点击确定就可以还原出字符串了。


1.png (116.79 KB, 下载次数: 0)
下载附件
2021-5-20 15:24 上传

最后一个16进制可选可不选,如果选择解密后会消失,加密还原回去还要再补密钥,所以建议不选择。


1.png (63.66 KB, 下载次数: 0)
下载附件
2021-5-20 15:28 上传

有了这些明文就很容易理解它在干什么了,所以8LKHLKKJJ;J
1.png (94.25 KB, 下载次数: 0)
下载附件
2021-5-20 15:40 上传

进一步解密后都是一些熟悉的字符串了,总的来说servicemanager逻辑就是提取安装包的路径,然后直接获取要校验的文件,这样可以绕过各种hook。所以它的字符串储存方式就是
密文+密钥
,然后用异或算法进行加解密。
破解会员功能需要修改dex,因为比较简单请自行分析。

字符串, 下载次数

闷骚小贱男   


lovesu 发表于 2021-5-20 14:31
是不是真的,我刚想刷开发版的

建议还是申请开发版公测权限,如果懒得申请..那就偷渡,不过偷渡完之后无法升级
PS:操作之前建议备份所有数据到电脑.
稳定→开发,数据一般都在。开发→稳定,会清空数据
卡刷包下载:https://xiaomirom.com/
1搜你的机型的开发版卡刷包 并下载(例:名为A.zip)
2手机更新下载稳定版完整包 (B.zip)
3开启点miui图标手动选择安装包功能
4选择完整的包B.zip
5点确认之前 替换开发版(A.zip)的名字为B.zip并覆盖之前的稳定版完整包 (B.zip)
6等待完成,重启后就是开发版
zipl1985   

高深,了解一下,谢谢
o0蜗牛   

rom包,那小米rom手机包是不是也同理,可以去校验?
闷骚小贱男   


o0蜗牛 发表于 2021-5-20 11:33
rom包,那小米rom手机包是不是也同理,可以去校验?

小米卡刷能偷梁换柱..稳定版上开发版..昨天试了一下新的开发内测版
然后刷面具那些的一套下来  直接扬声器/录音功能全有问题了..
然后我还是乖乖的切换稳定版 刷面具..
mitchzh   

搬个板凳,听大神讲课。
浮-梦   

感谢分享 谢谢
lovesu   


闷骚小贱男 发表于 2021-5-20 11:57
小米卡刷能偷梁换柱..稳定版上开发版..昨天试了一下新的开发内测版
然后刷面具那些的一套下来  直接扬声 ...

是不是真的,我刚想刷开发版的
芽衣
OP
  


o0蜗牛 发表于 2021-5-20 11:33
rom包,那小米rom手机包是不是也同理,可以去校验?

不同厂商套路不一样
吃泡面加不起蛋   

前排支持芽衣大佬
您需要登录后才可以回帖 登录 | 立即注册

返回顶部