为冒泡为继续反汇编学习,练手而做,没什么技术含量。
peid侦查结果为MASM32 / TASM32,那就直接OD载入。停在如下:
00401000 >/$ 6A 00 push 0x0 ; /(Initial CPU selection)
00401002 |. E8 C9000000 call <jmp.&kernel32.GetModuleHandleA> ; \GetModuleHandleA
00401007 |. A3 40304000 mov dword ptr ds:[0x403040],eax
0040100C |. 6A 00 push 0x0 ; /lParam = NULL
0040100E |. 68 28104000 push Crackme2.00401028 ; |DlgProc = Crackme2.00401028
00401013 |. 6A 00 push 0x0 ; |hOwner = NULL
00401015 |. 6A 65 push 0x65 ; |pTemplate = 65
00401017 |. FF35 40304000 push dword ptr ds:[0x403040] ; |hInst = NULL
0040101D |. E8 90000000 call <jmp.&user32.DialogBoxParamA> ; \DialogBoxParamA
00401022 |. 50 push eax ; /ExitCode
00401023 \. E8 A2000000 call <jmp.&kernel32.ExitProcess> ; \ExitProcess
00401028 /. 55 push ebp
右键查找当前模块中的名称,找到GetDlgItemTextA函数,或者直接BP GetDlgItemTextA,F9之后单步走几次,如下:
00401063 |. 52 push edx ; /String2 = "Serial"
00401064 |. 53 push ebx ; |String1 => "123456"
00401065 |. E8 6C000000 call <jmp.&kernel32.lstrcmpA> ; \lstrcmpA
123456为输入的假密码,真密码就是Serial,很明显调用了一个strcmpA作比较!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!