这是论坛同学编的一个,这个的亮点是有一定的反调试
最近用熟练了x32dbg,所以就用这个了
命令隐藏调试器,结果发现不行
一运行就退出进程了
字串里看看发现以下情报
很显然 "ZwSetInformationThread" 这个看着十分不顺眼
来到此处
段首下断,重启,果然断下return掉,接下来就能进入调试分析了。
接下来,你有多种搞法
1.通过api下断 <user32.dll.GetWindowTextA>
2.易特征码按钮事件
3.易特征汇编语句
4.字符串定位
无论哪种均能斩获
后面就没什么难度了。你可以采取两头凑的方法。
GetWindowTextA断后不久来到
00402AE | 0F84 | je crackme - 无花指令版.402B1B ==================》这是最后一次跳转!看到这里没? 我们准备大跳修改了!
成功的代码在 00402AE ; 那我们就jmp 00402AE
00402AE | 68 0 | push 80000004 ====>注意看这里!
00402AF | 6A 0 | push 0 |
00402AF | 68 C | push crackme - 无花指令版.4A03CB | 4A03CB:"\r\n密钥:密钥正确"
00402AF | 68 0 | push 10005 |
00402AF | 68 F | push 160100F7 |
00402B0 | 68 F | push 520100F6 |
00402B0 | 68 0 | push 2 |
00402B0 | BB E | mov ebx,<crackme - 无花指令版.sub_403 |
00402B1 | E8 2 | call <crackme - 无花指令版.sub_402E3D |
前面有一堆第X次字符错误,你可以从下向上标JCC ,然后全改成JMP即可成功爆破
======================================
我们下面说的是另一种玩法:
0040232 | 0F84 | je crackme - 无花指令版.4023A8 | 我们向下跟,直到达到此处!
[Asm] 纯文本查看 复制代码
0040233 | 6A 0 | push 0 |
0040233 | 68 0 | push crackme - 无花指令版.49FC0C |
0040233 | 6A F | push FFFFFFFF |
0040233 | 6A 0 | push A |
0040233 | 68 0 | push 16010004 |
0040234 | 68 0 | push 52010001 |
0040234 | E8 F | call <crackme - 无花指令版.sub_402E49 |
0040234 | 83C4 | add esp,18 |
0040234 | 68 0 | push 10001 |
0040235 | 68 F | push 60100F5 |
0040235 | 68 F | push 520100F6 |
0040235 | 68 0 | push 1 |
0040236 | BB 9 | mov ebx,<crackme - 无花指令版.sub_403 | ebx:&"99"
0040236 | E8 D | call <crackme - 无花指令版.sub_402E3D |
0040236 | 83C4 | add esp,10 |
0040236 | 85C0 | test eax,eax |
0040237 | 0F84 | je crackme - 无花指令版.4023A3 |
0040237 | 68 0 | push 80000004 |
0040237 | 6A 0 | push 0 |
0040237 | 68 A | push crackme - 无花指令版.49FFA5 | 49FFA5:"\r\n密钥:长度错误"
但是执行到 00402B13 这句时 按理说该弹出正确的提示了,但会说,数组超出范围,然后就退出了。
也就是说004021F5 这句出的错,所以F7跟进去再修改掉就行了。
找对了正确的流程就成功了8成。
|