打印
[STM32F1]

STM32反汇编实战**开机验证码

[复制链接]
4876|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yjmwxwx|  楼主 | 2015-12-15 16:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
想仿制别人的产品但是作者只提供HEX文件, 并且有产品唯一身份标识的验证码,每换一片STM32就要跟原作者要验证码,原作者比较忙所以要验证码很不方便。 于是研究一下能不能破解一下。上一帖贴了IDA的基本用法,我是新手第一次搞破解, 我是小学学历不懂英文和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


沙发
leonliu_1128| | 2015-12-15 16:35 | 只看该作者
产品唯一身份标识的验证码是随机数产生的吗?

使用特权

评论回复
板凳
yjmwxwx|  楼主 | 2015-12-15 16:48 | 只看该作者
leonliu_1128 发表于 2015-12-15 16:35
产品唯一身份标识的验证码是随机数产生的吗?

不是随机数,是根据产品唯一身份标识寄存器计算的一个固定数

使用特权

评论回复
地板
huangqi412| | 2015-12-15 17:11 | 只看该作者
标记一下。IDA反汇编。

使用特权

评论回复
5
maiweiqi| | 2015-12-15 17:23 | 只看该作者
有**就有反**有反**又有反反**有反反**又会有反反反**………………………………

使用特权

评论回复
6
大道至简| | 2015-12-15 18:13 | 只看该作者
mark

使用特权

评论回复
7
m564522634| | 2015-12-16 16:29 | 只看该作者
为什么没有人喷呢!作为一个工程师自己的产品被这样搞你们是什么感觉。

使用特权

评论回复
8
TRUE_ARM| | 2015-12-16 18:43 | 只看该作者
这么牛X?

使用特权

评论回复
9
yjmwxwx|  楼主 | 2015-12-17 17:32 | 只看该作者

小学文化就能搞说明门槛很低,再说我不是专门搞**的,主业是农民种地的业余自学了点单片机不会C语言没办法才学的汇编,五线小城市的厂子都不收写汇编的。 我搞出个东西不容易就想分享下,证明简单的加密**成本很低。

使用特权

评论回复
10
yjmwxwx|  楼主 | 2015-12-18 22:01 | 只看该作者
不改BNE了

改成输入错误密码就把正确密码显示在屏幕上

loc_8002b6c里面的sdiv.w  r0, r9, r0改成了mov r1, # 6和mov r0, r10  (r10里面是密码)跳转后改了个BL调用,直接调用显示把密码显示出来。

原来的




修改后的




使用特权

评论回复
11
Vantica| | 2015-12-19 12:08 | 只看该作者
搞开发的不会喜欢这种技术分享

使用特权

评论回复
12
hgjinwei| | 2015-12-19 13:13 | 只看该作者
所以说,神马在ROM里面直接运行代码是多么的不安全,
还是应该把可执行代码放在ROM,但需要搬移到RAM才可运行,
然后就可以在搬运过程中解密,加密,解密,。。。。。。

使用特权

评论回复
13
itelectron| | 2016-1-24 22:12 | 只看该作者

fan

本帖最后由 itelectron 于 2016-1-24 22:19 编辑

哈哈  楼主  打开了另一扇门 而已     科班工程师 不用那么 生气  哈哈 以前  HOT POWER   不是也干这个  还有   以前 那些仿 汉卡的


以前 还没有  什么  IDA    现在  都用 ARM     要想  反 逆向  用冷 门    IDA  里没有的芯片  就行   !让楼主  人工反呀 !而且 能破密码  很难改内容  算法  加功能
楼主要是能把汇编  转成C  用C在编译回去   对比  98% 以上 二进制 相同   那就  不枉费  青春了  哈哈!!

   越熟悉 低层的 人  **  能力越强  !  逆向也是种 能力  哈哈

使用特权

评论回复
14
itelectron| | 2016-1-24 22:19 | 只看该作者
hgjinwei 发表于 2015-12-19 13:13
所以说,神马在ROM里面直接运行代码是多么的不安全,
还是应该把可执行代码放在ROM,但需要搬移到RAM才可运 ...

直接读取RAM  不是更简单 哈哈

使用特权

评论回复
15
itelectron| | 2016-1-24 22:28 | 只看该作者
本帖最后由 itelectron 于 2016-1-24 22:34 编辑

以后ROM 不要存  明码   增加难度 !程序运行中 屏蔽JTAG     ,多用指针!  然后伪造 明码  陷阱 ,然后发现 入侵  立刻 全 片 擦除  然后  反复察除 FLASH   一直 察  坏 芯片  哈哈!或者发现 入侵 ,故意让其得逞,然后让  系统运行不问题   !。。。。。。。。。魔高一尺道高一丈。。。。。。。

使用特权

评论回复
16
戈卫东| | 2016-1-24 22:47 | 只看该作者
不搞软件真的是我们天朝的损失啊。。。。。

使用特权

评论回复
17
奔牛滚滚| | 2016-1-24 23:14 | 只看该作者
hex文件都给了就没啥好说的了.

使用特权

评论回复
18
gowow| | 2016-1-25 10:11 | 只看该作者
其实**就和debug差不多。
你们debug最怕什么? 没法抓住一个点能稳定重现故障现场的bug。。。反**就按这个套路来吧。

使用特权

评论回复
19
yjmwxwx|  楼主 | 2016-1-25 11:33 | 只看该作者
我也不是专门搞这个的,只是好奇玩一下。 在别的论坛上有问怎样计算跳转地址的,但是我也不知道公式,我是用土法算的。


代码:
.text:00005C8E     04 BC                       POP     {R2}.text:00005CC6    E2 E7                       B       loc_5C8E.text:00005CD8     D9 E7                       B       loc_5C8E
已知:B指令所在地址(5CC6,5CD8),跳转目标地址(5C8E)
求:红色部分E2与D9怎么计算而来的,求计算过程及公式。。                       

以下是我的回答:
我不懂英文没法找资料,我是用土法算的。
0x5cc6 - 0x5c8e= 0x38
0x38 + 0x04 = 0x3c
0x3c / 2 =0x1e
0X100 - 0X1E = 0XE2                                                                       



.text:0000606E     11 E0                       B       loc_6094


向后跳更好算

0x6094 - 0x606e = 0x26

0x26 - 0x04 = 0x22

0x22 / 0x02 = 0x11                                                                       

使用特权

评论回复
20
Jessicakjdsl| | 2016-1-31 16:14 | 只看该作者
这个是技术贴啊,话说汇编学好了用处真大啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

117

主题

2715

帖子

47

粉丝