home *** CD-ROM | disk | FTP | other *** search
- SpaceKeks Crackme tutorial by nh
-
- E-Mail: nh666@mail.ru
-
- Need Tools: SoftIce v4.xx
-
-
- let's start... algo is simple.
- let's x1,x2,x3,x4 - numbers in edit-boxes
-
- seg001:00444A75 mov edx, [esi]
- seg001:00444A77 imul edx, [edi]
- seg001:00444A7A mov ecx, [esi+4]
- seg001:00444A7D imul ecx, [edi+8]
- seg001:00444A81 add edx, ecx
- seg001:00444A83 mov ds:446834h, edx ; 9*x1+15*x3
- seg001:00444A89 mov edx, [esi]
- seg001:00444A8B imul edx, [edi+4]
- seg001:00444A8F mov ecx, [esi+4]
- seg001:00444A92 imul ecx, [edi+0Ch]
- seg001:00444A96 add edx, ecx
- seg001:00444A98 mov ds:446838h, edx ; 9*x2+15*x4
- seg001:00444A9E mov edx, [esi+8]
- seg001:00444AA1 imul edx, [edi]
- seg001:00444AA4 mov ecx, [esi+0Ch]
- seg001:00444AA7 imul ecx, [edi+8]
- seg001:00444AAB add edx, ecx
- seg001:00444AAD mov ds:44683Ch, edx ;-9*x1+6*x3
- seg001:00444AB3 mov edx, [esi+8]
- seg001:00444AB6 imul edx, [edi+4]
- seg001:00444ABA imul eax, ebx
- seg001:00444ABD add edx, eax
- seg001:00444ABF mov ds:446840h, edx ; -9*x2+6*x4
- seg001:00444AC5 movsx eax, byte ptr ds:445A08h
- seg001:00444ACC add eax, eax
- seg001:00444ACE mov [esi], eax
- seg001:00444AD0 movsx eax, byte ptr ds:445A09h
- seg001:00444AD7 add eax, eax
- seg001:00444AD9 mov [esi+4], eax
- seg001:00444ADC movsx eax, byte ptr ds:445A0Ah
- seg001:00444AE3 add eax, eax
- seg001:00444AE5 mov [esi+8], eax
- seg001:00444AE8 movsx eax, byte ptr ds:445A0Bh
- seg001:00444AEF add eax, eax
- seg001:00444AF1 mov [esi+0Ch], eax
- seg001:00444AF4 mov eax, [esi]
- seg001:00444AF6 imul dword ptr [edi]
- seg001:00444AF8 mov edx, [esi+4]
- seg001:00444AFB imul edx, [edi+8]
- seg001:00444AFF add eax, edx
- seg001:00444B01 mov ds:446854h, eax ; 4*x1+8*x3
- seg001:00444B06 mov eax, [esi]
- seg001:00444B08 imul dword ptr [edi+4]
- seg001:00444B0B mov edx, [esi+4]
- seg001:00444B0E imul edx, [edi+0Ch]
- seg001:00444B12 add eax, edx
- seg001:00444B14 mov ds:446858h, eax ; 4*x2+8*x4
- seg001:00444B19 mov eax, [esi+8]
- seg001:00444B1C imul dword ptr [edi]
- seg001:00444B1E mov edx, [esi+0Ch]
- seg001:00444B21 imul edx, [edi+8]
- seg001:00444B25 add eax, edx
- seg001:00444B27 mov ds:44685Ch, eax ; -6*x1+10*x3
- seg001:00444B2C mov eax, [esi+8]
- seg001:00444B2F imul dword ptr [edi+4]
- seg001:00444B32 mov edx, [esi+0Ch]
- seg001:00444B35 imul edx, [edi+0Ch]
- seg001:00444B39 add eax, edx
- seg001:00444B3B mov ds:446860h, eax ; -6*x2+10*x4
- seg001:00444B40 movsx eax, byte ptr ds:445A0Ch
- seg001:00444B47 shl eax, 2
- seg001:00444B4A mov [esi], eax
- seg001:00444B4C movsx eax, byte ptr ds:445A0Dh
- seg001:00444B53 shl eax, 2
- seg001:00444B56 mov [esi+4], eax
- seg001:00444B59 movsx eax, byte ptr ds:445A0Eh
- seg001:00444B60 shl eax, 2
- seg001:00444B63 mov [esi+8], eax
- seg001:00444B66 movsx eax, byte ptr ds:445A0Fh
- seg001:00444B6D shl eax, 2
- seg001:00444B70 mov [esi+0Ch], eax
- seg001:00444B73 mov eax, ds:446834h
- seg001:00444B78 sub eax, ds:446844h
- seg001:00444B7E mov ds:446874h, eax
- seg001:00444B83 mov eax, ds:446838h
- seg001:00444B88 sub eax, ds:446848h
- seg001:00444B8E mov ds:446878h, eax
- seg001:00444B93 mov eax, ds:44683Ch
- seg001:00444B98 sub eax, ds:44684Ch
- seg001:00444B9E mov ds:44687Ch, eax
- seg001:00444BA3 mov eax, ds:446840h
- seg001:00444BA8 sub eax, ds:446850h
- seg001:00444BAE mov ds:446880h, eax
- seg001:00444BB3 mov eax, ds:446854h
- seg001:00444BB8 add eax, [esi]
- seg001:00444BBA mov ds:446884h, eax
- seg001:00444BBF mov eax, ds:446858h
- seg001:00444BC4 add eax, [esi+4]
- seg001:00444BC7 mov ds:446888h, eax
- seg001:00444BCC mov eax, ds:44685Ch
- seg001:00444BD1 add eax, [esi+8]
- seg001:00444BD4 mov ds:44688Ch, eax
- seg001:00444BD9 mov eax, ds:446860h
- seg001:00444BDE add eax, [esi+0Ch]
- seg001:00444BE1 mov ds:446890h, eax
- seg001:00444BE6 mov eax, ds:446874h
-
- we get 4 linear equations with 4 variables:
-
- 9*x1+15*x3-2=4*x1+8x3-16
- 9*x2+15*x4=4*x2+8*x4+4
- -9*x1+6*x3+4=-6*x1+10*x3
- -9*x2+6*x4-6=-6*x1+10*x4+8
-
- so, x1=84, x2=-114, x3=-62, x4=82
-
- ; comparing
-
- seg001:00444BEB cmp eax, ds:446884h
- seg001:00444BF1 jnz short bad
- [...skipped...]
-
- code is 84 -114 -62 82
-
-
- /nh
-