一个论坛大牛的crackme
【文章标题】: 一个论坛大牛的crackme【文章作者】: 就是我自己
【下载地址】: https://www.52pojie.cn/thread-642649-1-1.html
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
一路磕磕碰碰,总算出来了。
载入,输入注册码12345678,下易语言按钮事件:FF 55 FC 5F 5E,F9走起:
0041AC6D|> \FF55 FC call ;CrackMe.0040105B
0041AC70|.5F pop edi ;00A25518
0041AC71|.5E pop esi ;00A25518
0041AC72|.895D F4 mov ,ebx
1、第一处判断:
0040105B/.55 push ebp
0040105C|.8BEC mov ebp,esp
0040105E|.81EC 40000000 sub esp,0x40
00401064|.C745 FC 00000>mov ,0x0
0040106B|.C745 F8 00000>mov ,0x0
00401072|.C745 F4 00000>mov ,0x0
00401079|.6A FF push -0x1
0040107B|.6A 08 push 0x8
0040107D|.68 04000116 push 0x16010004
00401082|.68 01000152 push 0x52010001
00401087|.E8 68080000 call CrackMe.004018F4 ;得假码
0040108C|.83C4 10 add esp,0x10
0040108F|.8945 F0 mov ,eax
00401092|.6A 00 push 0x0
00401094|.6A 00 push 0x0
00401096|.6A 00 push 0x0
00401098|.68 04000080 push 0x80000004
0040109D|.6A 00 push 0x0
0040109F|.68 5C3C4800 push CrackMe.00483C5C ;-
004010A4|.68 04000080 push 0x80000004
004010A9|.6A 00 push 0x0
004010AB|.8B45 F0 mov eax,
004010AE|.85C0 test eax,eax
004010B0|.75 05 jnz short CrackMe.004010B7
004010B2|.B8 5E3C4800 mov eax,CrackMe.00483C5E
004010B7|>50 push eax ;注册码入栈
004010B8|.68 03000000 push 0x3
004010BD|.BB 101D4000 mov ebx,CrackMe.00401D10
004010C2|.E8 1B080000 call CrackMe.004018E2 ;计算第一个判断,由- 分段,不是5段死
0040113C|.8B43 04 mov eax,dword ptr ds:
0040113F|>8945 EC mov ,eax ;eax不等于5就死
00401142|.837D EC 05 cmp ,0x5
00401146|.0F84 41000000 je CrackMe.0040118D
注册码改成123-123-123-123-123
2、第二处判断
004011C8|.E8 15070000 call CrackMe.004018E2 ;第二个
004011CD|.83C4 10 add esp,0x10
004011D0|.8945 EC mov ,eax
004011D3|.8D45 FC lea eax,
004011D6|.50 push eax
004011D7|.68 40000000 push 0x40
004011DC|.68 04000000 push 0x4
004011E1|.FF75 EC push ;CrackMe.00483CB5
004011E4|.B8 00000000 mov eax,0x0
004011E9|.E8 00070000 call CrackMe.004018EE
004011EE|.8945 E4 mov ,eax
004011F1|.837D E4 00 cmp ,0x0
004011F5|.0F85 41000000 jnz CrackMe.0040123C ;如果强行改jmp,下面会出现内存不可读的错误
根据004011D0 和内存不可读的那里,可知道,注册码第一项的16进制应该是内存中的地址,所以我们假定一个:
4321123-123-123-123-123,这样就可以过了第二处验证,继续跟:
3、继续向下
0040125E|.8B5D F0 mov ebx, ;第二段注册码送ebx
00401261|.8B03 mov eax,dword ptr ds:
00401263|.85C0 test eax,eax
00401265|.75 05 jnz short CrackMe.0040126C
00401267|.B8 5E3C4800 mov eax,CrackMe.00483C5E
0040126C|>50 push eax
0040126D|.68 01000000 push 0x1
00401272|.BB E01A4000 mov ebx,CrackMe.00401AE0
00401277|.E8 66060000 call CrackMe.004018E2 ;第二段变16进制送al
004012BE|.8B5D E4 mov ebx,
004012C1|.8B03 mov eax,dword ptr ds:
004012C3|.85C0 test eax,eax
004012C5|.75 05 jnz short CrackMe.004012CC
004012C7|.B8 5E3C4800 mov eax,CrackMe.00483C5E
004012CC|>50 push eax
004012CD|.68 01000000 push 0x1
004012D2|.BB E01A4000 mov ebx,CrackMe.00401AE0
004012D7|.E8 06060000 call CrackMe.004018E2 ;第三段
0040131E|.8B5D D8 mov ebx, ;CrackMe.004147F6
00401321|.8B03 mov eax,dword ptr ds:
00401323|.85C0 test eax,eax
00401325|.75 05 jnz short CrackMe.0040132C
00401327|.B8 5E3C4800 mov eax,CrackMe.00483C5E
0040132C|>50 push eax
0040132D|.68 01000000 push 0x1
00401332|.BB E01A4000 mov ebx,CrackMe.00401AE0
00401337|.E8 A6050000 call CrackMe.004018E2 ;第四段
0040137E|.8B5D CC mov ebx,
00401381|.8B03 mov eax,dword ptr ds:
00401383|.85C0 test eax,eax
00401385|.75 05 jnz short CrackMe.0040138C
00401387|.B8 5E3C4800 mov eax,CrackMe.00483C5E
0040138C|>50 push eax
0040138D|.68 01000000 push 0x1
00401392|.BB E01A4000 mov ebx,CrackMe.00401AE0
00401397|.E8 46050000 call CrackMe.004018E2 ;第五段
一直向下,来到这里
004014C2|.68 03000000 push 0x3
004014C7|.BB F0234000 mov ebx,CrackMe.004023F0
004014CC|.E8 11040000 call CrackMe.004018E2 ;跟进去看看
004014D1|.83C4 28 add esp,0x28
F7单步到这
004023F0 .57 push edi
004023F1 .8B7C24 10 mov edi,dword ptr ss:
004023F5 .8B47 08 mov eax,dword ptr ds:
004023F8 .8BC8 mov ecx,eax
004023FA .C1E8 1D shr eax,0x1D
F8向下走
********
00402466 .C1E9 02 shr ecx,0x2
00402469 .F3:A5 rep movs dword ptr es:,dword ptr ds: ;
0040246B .8BCA mov ecx,edx
0040246D .83E1 03 and ecx,0x3
00402470 .F3:A4 rep movs byte ptr es:,byte ptr ds:
********
这里注意00402469,这里是把ds:里面的数据copy到自己乱写的地址处,而ds:里的数据是什么呢?
看数据窗口
ds:==7B7B7B7B ,发现了吗就是我们后面四段的数据,改成10进制就是123123123123
es:==52FF6A14
暂时不知道这里什么用,我们F8接着向下走,来到
00401521|.68 04000000 push 0x4
00401526|.FF75 EC push ;CrackMe.0041EF63
00401529|.B8 00000000 mov eax,0x0
0040152E|.E8 BB030000 call CrackMe.004018EE
00401533|.E8 57020000 call CrackMe.0040178F ;跟进去看看
0040178F/$55 push ebp
00401790|.8BEC mov ebp,esp
00401792|.81EC 20000000 sub esp,0x20
00401798|.8B1D C08E4A00 mov ebx,dword ptr ds:
0040179E|.8B0B mov ecx,dword ptr ds:
004017A0|.41 inc ecx
一直来到
00401807|.DD45 E8 fld qword ptr ss: ;把ss:浮点数弹到ST0
0040180A|.DC05 B13C4800 fadd qword ptr ds: ;ST0里的浮点数加上ds:里的浮点数
00401810|.DD5D E0 fstp qword ptr ss:
00401813|.DD45 E0 fld qword ptr ss:
00401816|.E8 4DFFFFFF call CrackMe.00401768 ;跟进去看看
00401768/$55 push ebp
00401769|.8BEC mov ebp,esp
0040176B|.83C4 F4 add esp,-0xC
0040176E|.D97D FE fstcw word ptr ss:
00401771|.66:8B45 FE mov ax,word ptr ss:
00401775|.80CC 0C or ah,0xC
00401778|.66:8945 FC mov word ptr ss:,ax
0040177C|.D96D FC fldcw word ptr ss:
0040177F|.DF7D F4 fistp qword ptr ss: ;把ST0弹到ss:
00401782|.D96D FE fldcw word ptr ss:
00401785|.8B45 F4 mov eax, ;把ss:的值给eax
00401788|.8B55 F8 mov edx, ;CrackMe.0041EF63
0040178B|.8BE5 mov esp,ebp
0040178D|.5D pop ebp
0040178E\.C3 retn
向下走
00401538|.8945 EC mov ,eax ;CrackMe.0041EF65
0040153B|.837D EC 01 cmp ,0x1
0040153F|.0F84 41000000 je CrackMe.00401586 ;eax与1比较,不为1就死
还记得eax现在是什么值吗?对了,就是00401785处给他赋的值,也就是st0的值,那怎么办呢?
还记得*****段的copy语句吗?是的,我们只要把我们注册码第一段的地址改成483CB1+4(双精度高8位)处,不就可以改ds:里面的数值了吗?
那数值改成多少呢?
现在我们第一位注册码为483CB5,十进制是4734133,他要加上那个数值第于1,就可以通过,那么我们就改那个数值为-4734132,换成浮点数是:C1520F2D00000000
他的高8位在内存中的写应该是 2D 0F 52 C1 这与就是代表了我们后面四段的注册码,
所以注册码连起来就是4734133-45-15-82-193
------------------------------------------------------------------------------
2018年02月24日 16:54:40 枫笑九洲 发表于 2018-2-24 17:00
注册码不止一个
4734133-45-271-82-449也行,后面四段只要低2位符合规律都成
根据004011D0 和内存不可读的那里,可知道,注册码第一项的16进制应该是内存中的地址,
这段话不理解 枫笑九洲 发表于 2018-2-24 17:00
注册码不止一个
4734133-45-271-82-449也行,后面四段只要低2位符合规律都成
大佬,第二个验证不太明白是怎么来的 注册码不止一个
4734133-45-271-82-449也行,后面四段只要低2位符合规律都成 代码可以用代码框处理一下,会好看很多。 谢谢分享,学习一下! 谢谢分享 学习 云里雾里,好牛掰的 厉害 支持一下。 谢谢分享,学习一下 你太谦虚了,像你这种一发帖子就自称大牛的人,我们和你都不是一个档次的。
页:
[1]
2