00- APK已经被混淆,并且有签名校验,
目的是过签名校验,混淆且不用管,直接搜索 使用到的so库名,

开始IDA加载so库静态分析。。。。

直接查看 Exports 导出函数窗口 ,查看到 check_signature 函数

双点check_signature 跳到 IDA View-A 窗口,可以看到有调用获取包名签名的代码,

打开【View -> open subviews -> Strings】显示字符串窗口
可使用【Ctrl + F】 进行关键字搜索。

找到类名路径,传对象Object 返回 整数型int ,估计是返回签名值,那么动态库里存有hashCode签名值 ,

回看IDA View-A 窗口 ,走到函数结束位置,分析返回值,点击补码,
【0xE616FBFD ->[补码]-> -0x19E90403 ->[转十进制] -> -434701315】这个【-434701315】就是此APK安装包的签名值,反码后的十进制为【434701314】,



点击右鼠标,Xrefs graph to 可生成视图观看

【二进制原码】0000 0000 0000 0000 0000 0000 0000 0011 ,
【反码】取反操作:0 变为1 1变为0; 取反后的结果即为反码
1111 1111 1111 1111 1111 1111 1111 1100 ,
【补码】将反码 +1 得到补码
1111 1111 1111 1111 1111 1111 1111 1101 ,
01- 修改SO签名值
首先先获取自己的使用的签名证书的签名值,这里我新创建一个.keystore签名证书文件,获取的签名值为【-1476456078】,
使用计算器计算,得到结果是【-1476456078 = A7FF1172】,
或者使用【1476456077[反码 十进制转十六进制] -> 5800EE8E[反转换8DEE0058 反码后转十六进制] -> 7211FFA7 [反转就是A7FF1172]】,


打开【View -> open subviews -> Hex dump 进入 Hex View窗口】
可以按【G】键 地址跳转,【0000132C】修改目标的地址

将光标放到目标数据,鼠标右键 选择Edit进行数据修改,
修改好后 鼠标右键 选择 应用修改 Apply changes ,
把【FDFB16E6 修改为 7211FFA7】,


修改后保存,把apk后缀名修改为zip,替换libJNIXiaozhu.so,签名打包完成!
网友评论