首页
社区
课程
招聘
[旧帖] [原创]STM32反汇编实战破解开机验证码 0.00雪花
发表于: 2015-12-15 16:23 4866

[旧帖] [原创]STM32反汇编实战破解开机验证码 0.00雪花

2015-12-15 16:23
4866
想仿制别人的产品但是作者只提供HEX文件, 并且有产品唯一身份标识的验证码,每换一片STM32就要跟原作者要验证码,原作者比较忙所以要验证码很不方便。 于是研究一下能不能破解一下。我是新手第一次搞破解, 我是小学学历不懂英文和C语言。。
这次破解全靠运气。
IDA的基本用法就不说了,直接切入分析。



既然程序用产品唯一身份标识那我们就从他开刀



打开IDA反汇编代码然后搜索0x1FFFF 然后看到0x8002950里面有,而且这个函数运算很繁琐可以确定这个就是主要目标



由于这个函数用了大了运算静态调试不容易,所以把我的最小系统板焊上了1602液晶跟键盘,按照他说的方法输入试用码成功后居然会在屏幕上显示Zero check...
这个英文是什么意思我不懂因为我不会英文, 但是我知道成功后会显示他,程序自己出卖了自己。  由于IDA反汇编ASCII有不准确的时候我们看十六进制代码搜索找Zero check...



然后到这个存放ASCII的数据区把原来不正确的反汇编按A键转换成ASCII



原来是sub_80012D8调用了他说明判断验证码在他前面



看他前面sub_80011C2   sub_8001280 sub_80011C2 这三个都不是,说明还是在sub_80012D8前面



现在可以肯定还是在0X8002950里面

然后我又输入错误的验证码看结果,看看他说的死机死在什么地方



原来不是死机是在0x8002B80死循环,找到0x8002B80



他左边的loc_8002A5C: 有POP正常返回说明他是正确的在往上找,找到loc_8002B58: 动态调试一下,在这里设个断点 ,随便输入一个数按键确认,调试后得知原来R10是计算后的 R7是我们输入的验证码



把bne loc_8002b6c改成 beq loc_8002b6c  改完以后结果就会时输入正确验证码死循环,输入错误验证码正常使用 。



把  06 D1 改成 04 D0 就可以了,06 D1 是BNE   , 04 D0 是BEQ

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 803
活跃值: (850)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
不改条件判断了,直接修改几个MOV和BL调用的机器码让他调转显示把验证码显示到液晶上,我是用土法算的条转地址, 这是我第一次搞破解,我比较菜只能搞这样简单的。

0x8002b70 开始改几个数就行了
修改前



修改后

上传的附件:
2016-1-22 23:10
0
雪    币: 231
活跃值: (2631)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
学习啦~!
2016-1-23 00:22
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习了~
2016-1-26 10:20
0
游客
登录 | 注册 方可回帖
返回
//