00- APK已经被混淆,并且有签名校验,

目的是过签名校验,混淆且不用管,直接搜索 使用到的so库名,

b336fda524b7

apk逆向分析.png

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

b336fda524b7

ida.png

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

b336fda524b7

check_signature.png

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

b336fda524b7

静态分析.png

打开【View -> open subviews -> Strings】显示字符串窗口

可使用【Ctrl + F】 进行关键字搜索。

b336fda524b7

Strings window窗口.png

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

b336fda524b7

逆向分析.png

回看IDA View-A 窗口 ,走到函数结束位置,分析返回值,点击补码,

【0xE616FBFD ->[补码]-> -0x19E90403 ->[转十进制] -> -434701315】这个【-434701315】就是此APK安装包的签名值,反码后的十进制为【434701314】,

b336fda524b7

继续分析.png

b336fda524b7

分析.png

b336fda524b7

点击Xrefs graph to.png

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

b336fda524b7

视图分析.png

【二进制原码】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]】,

b336fda524b7

计算器.png

b336fda524b7

修改目标的地址.png

打开【View -> open subviews -> Hex dump 进入 Hex View窗口】

可以按【G】键 地址跳转,【0000132C】修改目标的地址

b336fda524b7

地址跳转.png

将光标放到目标数据,鼠标右键 选择Edit进行数据修改,

修改好后 鼠标右键 选择 应用修改 Apply changes ,

把【FDFB16E6 修改为 7211FFA7】,

b336fda524b7

十六进制修改.png

b336fda524b7

修改完成.png

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐