当前位置:首页 > > 21ic电子网
[导读]知己知彼百战不殆,了解下敌人都是什么套路,有助于更好的保护自己的程序。

出品 21ic论坛   yjmwxwx

网站:bbs.21ic.com


知己知彼百战不殆,了解下敌人都是什么套路,有助于更好的保护自己的程序。
闲着没事调试下老毛子孔雀石SDR的固件,由于我没硬件只能用QEMU
作者产品资料网盘
https://yadi.sk/d/4ZgsrswxYClG1Q
安装支持STM32的 xPack QEMU Arm
安装方法如下,有详细说明不再重复。
https://xpack.github.io/qemu-arm/
打开IDA 的debugger菜单设置一下调试

用IDA PRO + QEMU动态调试STM32固件

用IDA PRO + QEMU动态调试STM32固件
qemu 运行参数

设置本机IP
用IDA PRO + QEMU动态调试STM32固件

运行可以连接了

用IDA PRO + QEMU动态调试STM32固件

通过比较新版和旧版固件很容易就找到了密码表地址0x80392d8

用IDA PRO + QEMU动态调试STM32固件
找哪个程序调用了这个表,发现是一个校验程序
用IDA PRO + QEMU动态调试STM32固件
向上找哪里调用的
用IDA PRO + QEMU动态调试STM32固件

我们又找到了读STM32ID的程序,通过分析上面两个是生成校验数组的。

用IDA PRO + QEMU动态调试STM32固件
往下看sub_800DB54是原来的ID号生成密码的程序
用IDA PRO + QEMU动态调试STM32固件

下面一些是对生成密码简单移位的程序,但是有上百行,人工看比较麻烦,所以运行动态调试

用IDA PRO + QEMU动态调试STM32固件
在0x800e270设个断点
用IDA PRO + QEMU动态调试STM32固件

运行以前的算号器生成本机密码

用IDA PRO + QEMU动态调试STM32固件
把IDA动态调试寄存器R6和R7改成 0XA52FF277和0XBC8FB975

0X800E3CC设个断点,运行看结果

用IDA PRO + QEMU动态调试STM32固件

运行

用IDA PRO + QEMU动态调试STM32固件
结果R0和R1  0x75b98fbc 0x77f22fa5
在下面函数里面设置个断点接着运行
用IDA PRO + QEMU动态调试STM32固件
这个不用调试肉眼就可以看出来,通过和密码表比较,密码表里面有就向R6+0x814地址写0XFA,没有就写0X58。
到这里已经知道怎么和密码表比较了

看固件BIN文件时候看到结尾有数据,这很不正常,看哪里调用看到两个对整个FLASH的校验程序

用IDA PRO + QEMU动态调试STM32固件

用IDA PRO + QEMU动态调试STM32固件

用IDA PRO + QEMU动态调试STM32固件
由于QEMU不支持STM32H7所以没办法运行整个程序,要是有硬件插上JILINK很容易就能知道哪个程序校验整个固件,静态不容易看到哪里进行校验。
人家作者开发的东西,有人**了还卖和作者原价骗人

要是有硬件我一定研究如何去掉保护免费放出固件,让搞**的没把法赚钱,但是没硬件就没办法了。

由于我没硬件没办法验证和调试,随便改改不知道能不能去掉保护。

0800DED4 由原来str r4, [r6, # 0x814]改成str r7, [r6, # 0x814]0800DD66由原来str r0, [r3]改成str r2, [r3]0800DC90和0800DC92由原来ldr r2, [r4]cmp r2, r3改成str r3, [r4]cmp r3, r3


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

21ic电子网

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭