只是学习交流讨论,切勿其它用途。
此次分享以实际案例进行讲解,涉及:
Windows 的开源二进制调试器,用于恶意软件分析和对没有源代码的可执行文件进行反向工程。
WinHex 本质上是一个通用十六进制编辑器。专为最低级别的数据处理而设计,作为计算机系统犯罪学(取证)调查的多功能工具,用于数据恢复和 IT 安全 - 在日常使用和紧急情况中。
KeyMake是一款功能强大的注册机编写器,该软件采用汇编模板为核心,可方便用户省去复杂的指令算法,从而快速制作出所需的注册机!
Ollydbg是一款专业的反汇编调试工具,主要用于一些应用程序的编译操作,软件最擅长分析函数过程、循环语句、API调用、函数中参数的数目和import表等等
此节讲解如何通过修改汇编代码来跳过程序验证部分(俗称打补丁)的形式来过掉程序的最终校验
思路:在软件运行时监测内存数据,查询是否有敏感或可利用信息
所用工具:Winhex
在关键判断("注册码正确,感谢你的注册!")处发现EDX存在正确的注册码与所输入的注册码进行对比,导致正确的注册码泄露,根据这一特点读取EDX数据,利用软件自身算码机制计算出正确的注册码并调取使用
所用工具:x64dbg、keymaker2
所用工具:x64dbg、od、winhex
因删除文件使用的是DeleteFile函数,使用OD分析函数进行分析
发现有两次引用该删除功能
请见附件
备注:PPT细节展示不是很多
00510465
|
74
1A
| je jzyq.
510481
|
00510467
|
8D95
70FFFFFF
| lea edx,dword ptr ss:[ebp
-
90
] |
0051046D
|
8B83
10030000
| mov eax,dword ptr ds:[ebx
+
310
] |
00510473
| E8 B80BF3FF | call jzyq.
441030
|
00510478
|
83BD
70FFFFFF
00
|
cmp
dword ptr ss:[ebp
-
90
],
0
|
0051047F
|
75
0F
| jne jzyq.
510490
|
00510481
| B8 A4065100 | mov eax,jzyq.
5106A4
|
5106A4
:"注册信息没有填写齐全
00510465
|
74
1A
| je jzyq.
510481
|
00510467
|
8D95
70FFFFFF
| lea edx,dword ptr ss:[ebp
-
90
] |
0051046D
|
8B83
10030000
| mov eax,dword ptr ds:[ebx
+
310
] |
00510473
| E8 B80BF3FF | call jzyq.
441030
|
00510478
|
83BD
70FFFFFF
00
|
cmp
dword ptr ss:[ebp
-
90
],
0
|
0051047F
|
75
0F
| jne jzyq.
510490
|
00510481
| B8 A4065100 | mov eax,jzyq.
5106A4
|
5106A4
:"注册信息没有填写齐全
00510543
|
0F85
A3000000 | jne jzyq.
5105EC
|
00510549
| B8 D0065100 | mov eax,jzyq.
5106D0
|
5106D0
:
"注册码正确,感谢你的注册!"
00510543
|
0F85
A3000000 | jne jzyq.
5105EC
|
00510549
| B8 D0065100 | mov eax,jzyq.
5106D0
|
5106D0
:
"注册码正确,感谢你的注册!"
点击工具—打开RAM内存—选择要查询的程序(jzyq)程序,字符串搜索(快捷键:Ctrl
+
F):china123study,开始未找到重点,F3继续查找看到关键点:
036j5u499
~f6242!,测试重新注册提示注册成功
得出如下正确注册信息
订单号:
112233
注册码:
036j5u499
~f6242!
总结:程序根据输入的订单号在算出正确的注册码,并于输入的注册码进行对比相等提示注册成功反之注册失败
点击工具—打开RAM内存—选择要查询的程序(jzyq)程序,字符串搜索(快捷键:Ctrl
+
F):china123study,开始未找到重点,F3继续查找看到关键点:
036j5u499
~f6242!,测试重新注册提示注册成功
得出如下正确注册信息
订单号:
112233
注册码:
036j5u499
~f6242!
总结:程序根据输入的订单号在算出正确的注册码,并于输入的注册码进行对比相等提示注册成功反之注册失败
0051053E
| E8 D546EFFF | call jzyq.
404C18
0051053E
| E8 D546EFFF | call jzyq.
404C18
0040959B
|. E8
9CDAFFFF
CALL <JMP.&kernel32.DeleteFileA> ; \DeleteFileA
0040959B
|. E8
9CDAFFFF
CALL <JMP.&kernel32.DeleteFileA> ; \DeleteFileA
00409590
/
$
53
PUSH EBX
00409591
|.
8BD8
MOV EBX, EAX
00409593
|.
8BC3
MOV EAX, EBX
00409595
|. E8
32B7FFFF
CALL jzyq.
00404CCC
0040959A
|.
50
PUSH EAX ;
/
FileName
0040959B
|. E8
9CDAFFFF
CALL <JMP.&kernel32.DeleteFileA> ; \DeleteFileA
004095A0
|.
83F8
01
CMP
EAX,
0x1
004095A3
|.
1BC0
SBB EAX, EAX
004095A5
|.
40
INC EAX
004095A6
|.
5B
POP EBX
004095A7
\. C3 RETN
00409590
/
$
53
PUSH EBX
00409591
|.
8BD8
MOV EBX, EAX
00409593
|.
8BC3
MOV EAX, EBX
00409595
|. E8
32B7FFFF
CALL jzyq.
00404CCC
0040959A
|.
50
PUSH EAX ;
/
FileName
0040959B
|. E8
9CDAFFFF
CALL <JMP.&kernel32.DeleteFileA> ; \DeleteFileA
004095A0
|.
83F8
01
CMP
EAX,
0x1
004095A3
|.
1BC0
SBB EAX, EAX
004095A5
|.
40
INC EAX
004095A6
|.
5B
POP EBX
004095A7
\. C3 RETN
004B01C2
|. E8 C993F5FF CALL jzyq.
00409590
004B01C2
|. E8 C993F5FF CALL jzyq.
00409590
005181EB
|. E8 A013EFFF CALL jzyq.
00409590
005181EB
|. E8 A013EFFF CALL jzyq.
00409590
005181CE
|.
3D
D0D61C00
CMP
EAX,
0x1CD6D0
005181CE
|.
3D
D0D61C00
CMP
EAX,
0x1CD6D0
1
2
3
4
5
6
7
|
00510465 | 74 1A | je jzyq. 510481 |
00510467 | 8D95 70FFFFFF | lea edx,dword ptr ss:[ebp - 90 ] |
0051046D | 8B83 10030000 | mov eax,dword ptr ds:[ebx + 310 ] |
00510473 | E8 B80BF3FF | call jzyq. 441030 |
00510478 | 83BD 70FFFFFF 00 | cmp dword ptr ss:[ebp - 90 ], 0 |
0051047F | 75 0F | jne jzyq. 510490 |
00510481 | B8 A4065100 | mov eax,jzyq. 5106A4 | 5106A4 :"注册信息没有填写齐全
|
1
2
|
00510543 | 0F85 A3000000 | jne jzyq. 5105EC |
00510549 | B8 D0065100 | mov eax,jzyq. 5106D0 | 5106D0 : "注册码正确,感谢你的注册!"
|
1
2
3
4
5
|
点击工具—打开RAM内存—选择要查询的程序(jzyq)程序,字符串搜索(快捷键:Ctrl + F):china123study,开始未找到重点,F3继续查找看到关键点: 036j5u499 ~f6242!,测试重新注册提示注册成功
得出如下正确注册信息
订单号: 112233
注册码: 036j5u499 ~f6242!
总结:程序根据输入的订单号在算出正确的注册码,并于输入的注册码进行对比相等提示注册成功反之注册失败
|
1 |
0051053E | E8 D546EFFF | call jzyq. 404C18
|
1 |
0040959B |. E8 9CDAFFFF CALL <JMP.&kernel32.DeleteFileA> ; \DeleteFileA
|
1
2
3
4
5
6
7
8
9
10
11
|
00409590 / $ 53 PUSH EBX
00409591 |. 8BD8 MOV EBX, EAX
00409593 |. 8BC3 MOV EAX, EBX
00409595 |. E8 32B7FFFF CALL jzyq. 00404CCC
0040959A |. 50 PUSH EAX ; / FileName
0040959B |. E8 9CDAFFFF CALL <JMP.&kernel32.DeleteFileA> ; \DeleteFileA
004095A0 |. 83F8 01 CMP EAX, 0x1
004095A3 |. 1BC0 SBB EAX, EAX
004095A5 |. 40 INC EAX
004095A6 |. 5B POP EBX
004095A7 \. C3 RETN
|
1 |
004B01C2 |. E8 C993F5FF CALL jzyq. 00409590
|
1 |
005181EB |. E8 A013EFFF CALL jzyq. 00409590
|
1 |
005181CE |. 3D D0D61C00 CMP EAX, 0x1CD6D0
|
- 暴力破解
- 真实注册码寻找
- 注册机编写
- 去除软件暗桩等知识点
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2020-12-4 17:19
被梦幻的彼岸编辑
,原因: