cz5420 发表于 2015-8-14 20:21

搜狐视频 破解签名校验简单分析

本帖最后由 cz5420 于 2015-8-14 20:33 编辑

搜狐视频apk直接重新签名再安装会闪退,这种情况多为签名校验,破解校验现在多数需要修改so文件。
首先反编译apk,然后在反编译目录下全局搜索signature


搜索结果如下:


容易看出是在libsecurities.so中校验的,smali中都是些无关紧要的东西


将libsecurities.so拖进IDA中分析


然后“视图”——“打开子视图”——“字符串”


搜索signature
此处常用的关键词有sign,signature,checkSign,signCheck,getPackageManager,getPackageInfo,verify,same等

第一处搜索结果:


点开


继续


按空格键切换视图


这个好像只是获取KeyStore,找的地方不对。退回去看一下


same,don't same,看来这儿才是关键,接着来到流程图


下图箭头所指便是要修改的地方

将MD5_KEY_ptr向上数0x1EFE处的数据放入R3中,寻址什么的,加加减减的我也不懂。。。但最后一步跳转还是要知道的
CMP   R0, #0
BNE   loc_1F2A
意思是将R0和0比较,如果不相等就跳到loc_1F2A,即图中绿色箭头指向的地方,真跳到这儿就挂了,因为重新打包apk后R0是不等于0的,所以只需将BNE改为BEQ即可,不等则跳改为等于则跳

点一下要修改的地方,然后切换到Hex(十六进制)窗口


ARM指令跟机器码之间的恩怨纠葛反正我是不懂,来看看@淡然出尘 大牛是怎么说的
首先可以肯定所有的机器码都是二进制,只是为了好看和压缩体积,以16进制的ASCII码显示。
arm汇编语言的添加码:
0000   EQ            相等
0010   CS/HS         进位/无符号数大于等于
0100   MI            减/负数
0110   VS            溢出
1000   HI            无符号数大于
1010   GE            有符号大于等于
1100   GT            有符号大于
1110   AL            任何条件
0001   NE            不等
0011   CC/LO         混进位/无符号数小于
0101   PL            加/正数或0
0111   VC            没溢出
1001   LS            无符号数小于等于
1011   LT            有符号数小于
1101   LE            有符号数小于等于
1111   -
以上的条件码对应的机器码都是二进制形式表现的。但是so文件则是以十六进制展现的,所以需要将二进制转换为十六进制才行。以EQ为例,二进制码为0000,转成16进制为0,BEQ的跳转语句即为0A.
同理,BNE对象的十六进制字节码为1A,BLE对应的为DA,BGE对应的是AA,BAL,也就是无条件跳转B对应的是EA
如此我们便知道将D1改为D0即可
复制上图红框框中的偏移地址,然后用C32ASM打开libsecurities.so为十六进制,“编辑”——“跳到”,粘贴偏移地址,定位


将D1改为D0,保存,再重新打包apk就行了。

@世事繁华皆成空 大牛的方法跟这个不一样。
俺发帖之前发消息问过繁华哥哥,允不允许俺把他的方法也写进帖里,可是当俺鼓足勇气写下那些深藏心里的话然后点击“发送”时,“抱歉,该用户只接收好友发送的短消息”,俺的内心几乎是崩溃的。但最后俺还是毅然决然地写下了最后这部分!如果繁华哥哥怪我,那肯定是因为他长得没我帅~{:1_924:}

繁华大牛的方法:

将CMP   R0, #0改为CMP   R0, R0,那就必然相等咯,对应的十六进制就是把00 28改80 42

cz5420 发表于 2015-8-14 22:02

世事繁华皆成空 发表于 2015-8-14 21:14
意思其实都是一样的,不过你这种找关键点的方式不好,开着ddms的话,key dont same是直接打印出来的,一下 ...

大牛语录,我的笔呢,我要记下来。
我是小白{:1_907:}并不知道ddms是什么东西,这个也是瞎猫碰上死耗子
就快开学了,以后要忙别的了,不然毕业都没饭吃啊{:1_923:}繁华哥哥不是刚工作不久吗{:1_918:}感觉怎么样

laofan 发表于 2017-8-11 14:51

@@cz5420 大神,,BEQ的跳转语句即为0A.
同理,BNE对象的十六进制字节码为1A,BLE对应的为DA,BGE对应的是AA,BAL,也就是无条件跳转B对应的是EA

如此我们便知道将D1改为D0,这个不是0A么,为啥突然要修改D1呢不是很懂,求指导

88酷行天下 发表于 2015-8-14 20:30

谢谢分享。。。。。。。。。。。。。

88酷行天下 发表于 2015-8-14 20:31

来个成品:loveliness:。。。。。

qtfreet00 发表于 2015-8-14 20:38

{:301_976:}膜拜大牛

Mouette 发表于 2015-8-14 20:48

看不懂,膜拜大牛{:301_1003:}

qtfreet00 发表于 2015-8-14 21:14

意思其实都是一样的,不过你这种找关键点的方式不好,开着ddms的话,key dont same是直接打印出来的,一下子就找到了,不一定每个签名验证都是signature,而且有很多

lengyue52pojie 发表于 2015-8-14 21:32

tiandi19920127 发表于 2015-8-15 09:29

虽然我没看懂 但是感觉好牛B

qtfreet00 发表于 2015-8-15 10:19

cz5420 发表于 2015-8-14 22:02
大牛语录,我的笔呢,我要记下来。
我是小白并不知道ddms是什么东西,这个也是瞎猫碰上死耗子
...

天天打酱油
页: [1] 2 3
查看完整版本: 搜狐视频 破解签名校验简单分析