新CrackMe160之047 - surre
与旧版139相同
Delphi写的就直接使用IDR反编译, 按钮事件代码如下:
crackme::TStatus.Button1Click
00429D20 push ebp
00429D21 mov ebp,esp
00429D23 add esp,0FFFFFEAC
00429D29 push ebx
00429D2A push esi
00429D2B push edi
00429D2C xor ecx,ecx
00429D2E mov dword ptr [ebp-154],ecx
00429D34 mov esi,eax
00429D36 xor eax,eax
00429D38 push ebp
00429D39 push 429E13
00429D3E push dword ptr fs:[eax]
00429D41 mov dword ptr fs:[eax],esp
00429D44 mov edx,429E2C; 'Status: Unregistered'
00429D49 mov eax,esi
00429D4B call TControl.SetText
00429D50 xor ebx,ebx
00429D52 mov eax,dword ptr [esi+1E0]; TStatus.OpenDialog1:TOpenDialog
00429D58 mov edx,dword ptr [eax]
00429D5A call dword ptr [edx+34]; TOpenDialog.Execute
00429D5D test al,al
>00429D5F je 00429D83
00429D61 lea edx,[ebp-154]
00429D67 mov eax,dword ptr [esi+1E0]; TStatus.OpenDialog1:TOpenDialog
00429D6D call TOpenDialog.GetFileName
00429D72 mov edx,dword ptr [ebp-154]
00429D78 lea eax,[ebp-150]
00429D7E call @Assign
00429D83 mov edx,1
00429D88 lea eax,[ebp-150]
00429D8E call @ResetFile
00429D93 call @_IOTest
>00429D98 jmp 00429DB4
00429D9A lea edx,[ebp-1]
00429D9D lea eax,[ebp-150]
00429DA3 call @ReadRec
00429DA8 call @_IOTest
00429DAD xor eax,eax
00429DAF mov al,byte ptr [ebp-1]
00429DB2 add ebx,eax ;;;;;;;;;;;;;;;;;;关键算法, 累加所有字符
00429DB4 lea eax,[ebp-150]
00429DBA call @EofFile
00429DBF call @_IOTest
00429DC4 test al,al
<00429DC6 je 00429D9A
00429DC8 lea eax,[ebp-150]
00429DCE call @Close
00429DD3 call @_IOTest
00429DD8 cmp ebx,20A9 ;;;;;;;;;;;;;关键对比
>00429DDE jne 00429DEE
00429DE0 mov edx,429E4C; 'Status: Registered - Well done'
00429DE5 mov eax,esi
00429DE7 call TControl.SetText
>00429DEC jmp 00429DFA
00429DEE mov edx,429E2C; 'Status: Unregistered'
00429DF3 mov eax,esi
00429DF5 call TControl.SetText
00429DFA xor eax,eax
00429DFC pop edx
00429DFD pop ecx
00429DFE pop ecx
00429DFF mov dword ptr fs:[eax],edx
00429E02 push 429E1A
00429E07 lea eax,[ebp-154]
00429E0D call @LStrClr
00429E12 ret
<00429E13 jmp @HandleFinally
<00429E18 jmp 00429E07
00429E1A pop edi
00429E1B pop esi
00429E1C pop ebx
00429E1D mov esp,ebp
00429E1F pop ebp
00429E20 ret
从代码中很容易知道, 只要文件中所有字符和=0x20A9就成功了, 示例如下:
示例1: 68个z + 1个A, (单一组合)
示例2: 32个0xFF + 1个0xC9, 这个需要16进制写入 (全乱码组合)
示例3: 261个空格0x20 + 1个Tab0x09 (全空白组合)
示例4: azaz' (两组a~z + 1个单引号, 优雅组合)
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载
下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~


浙公网安备 33010602011771号