新手破解练习Crackme160之146 - tc.12
IDR查看注册事件源码:
Unit1::TForm1.Register1Click
00446214 push ebp
00446215 mov ebp,esp
00446217 push 0
00446219 push 0
0044621B push ebx
0044621C push esi
0044621D push edi
0044621E mov esi,eax
00446220 xor eax,eax
00446222 push ebp
00446223 push 446320
00446228 push dword ptr fs:[eax]
0044622B mov dword ptr fs:[eax],esp
0044622E lea edx,[ebp-4]
00446231 mov eax,dword ptr [esi+2C4]; TForm1.Edit1:TEdit
00446237 call TControl.GetText
0044623C mov eax,dword ptr [ebp-4]
0044623F call @LStrLen
00446244 mov [004488D4],eax; gvar_004488D4:Longint
00446249 cmp dword ptr ds:[4488D4],0; gvar_004488D4:Longint
>00446250 je 00446302
00446256 xor ebx,ebx
00446258 inc ebx
00446259 lea edx,[ebp-4]
0044625C mov eax,dword ptr [esi+2C4]; TForm1.Edit1:TEdit
00446262 call TControl.GetText
00446267 mov eax,dword ptr [ebp-4]
0044626A movzx eax,byte ptr [eax+ebx-1]
0044626F mov dword ptr [ebx*4+448874],eax; gvar_00448874:TForm1
00446276 lea edx,[ebp-4]
00446279 mov eax,dword ptr [esi+2C4]; TForm1.Edit1:TEdit
0044627F call TControl.GetText
00446284 mov eax,dword ptr [ebp-4]
00446287 call @LStrLen
0044628C cmp ebx,eax
<0044628E jne 00446258
00446290 call 004461F0
00446295 mov eax,4488D8; gvar_004488D8:AnsiString
0044629A call @LStrClr
0044629F mov edi,12
004462A4 mov ebx,4488C0; gvar_004488C0
004462A9 lea eax,[ebp-8]
004462AC mov dl,byte ptr [ebx]
004462AE call @LStrFromChar
004462B3 mov edx,dword ptr [ebp-8]
004462B6 mov eax,4488D8; gvar_004488D8:AnsiString
004462BB mov ecx,dword ptr ds:[4488D8]; gvar_004488D8:AnsiString
004462C1 call @LStrCat3
004462C6 inc ebx
004462C7 dec edi
<004462C8 jne 004462A9
004462CA mov eax,[004488D8]; gvar_004488D8:AnsiString
004462CF mov edx,446338; ':倌珊哭}D镶訇I逸迯'
004462D4 call @LStrCmp
>004462D9 jne 00446302
004462DB mov eax,dword ptr [esi+2DC]; TForm1.Yeahyoudidit1:TMenuItem
004462E1 mov dl,1
004462E3 call TMenuItem.SetVisible
004462E8 mov eax,dword ptr [esi+2C4]; TForm1.Edit1:TEdit
004462EE xor edx,edx
004462F0 mov ecx,dword ptr [eax]
004462F2 call dword ptr [ecx+60]; TControl.SetEnabled
004462F5 mov eax,dword ptr [esi+2D8]; TForm1.Register1:TMenuItem
004462FB xor edx,edx
004462FD call TMenuItem.SetEnabled
00446302 xor eax,eax
00446304 pop edx
00446305 pop ecx
00446306 pop ecx
00446307 mov dword ptr fs:[eax],edx
0044630A push 446327
0044630F lea eax,[ebp-8]
00446312 call @LStrClr
00446317 lea eax,[ebp-4]
0044631A call @LStrClr
0044631F ret
<00446320 jmp @HandleFinally
<00446325 jmp 0044630F
00446327 pop edi
00446328 pop esi
00446329 pop ebx
0044632A pop ecx
0044632B pop ecx
0044632C pop ebp
0044632D ret
由上可得, 注册码经过算法运算后=":倌珊哭}D镶訇I逸迯" 就成功了~
#include <stdio.h>
#include <string.h>
int main() {
unsigned char rlt[] = ":倌珊哭}D镶訇I逸迯";
int tmp;
for(int i=0; i<9; i++) { //倒序一下
tmp = rlt[i];
rlt[i] = rlt[18 - i - 1];
rlt[18 - i - 1] = tmp;
}
for(int i=0; i<18; i++) {
tmp = rlt[i];
tmp += i + 1 - 8;
tmp = tmp >> 1;
tmp ^= 3;
rlt[i] = tmp;
}
printf("注册码: %s\n", rlt);
getchar();getchar();
return 0;
}
运行结果:
注册码: Good work Cracker!
1~160每个破解过程,在吾爱破解论坛都有高手破解过了,也有整理好现成的, 我这边主要就是自己动手操作的过程,与他们的不太一样
附上高手们的连接: 点击前往查看
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载
新人入门教程"玩玩破解,写给新人看" 点击前往查看
我就是从这里开始的,对我这样的小白感觉超级友好~
下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~


浙公网安备 33010602011771号