环境:

Windows Xp sp3

打开程序,看了帮助发现要求还是看到那个logo,

但是这次少了个按钮,真棒!

但是这次的Codice却是什么都可以输入进去了。

查一下壳发现还是Delphi程序。

因为还是Delphi的程序,有了前几次的经验,一下来到这里:

0044290F   . /982B4400      dd aLoNg3x_.00442B98
00442913   . |0D            db 0D
00442914   . |43 61 6E 63 6>ascii "CancellaClick"
00442921     |11            db 11
00442922     |00            db 00
00442923   . |C82C4400      dd aLoNg3x_.00442CC8
00442927   . |0A            db 0A
00442928   . |41 62 6F 75 7>ascii "AboutClick"
00442932     |15            db 15
00442933     |00            db 00
00442934   . |282F4400      dd aLoNg3x_.00442F28
00442938   . |0E            db 0E
00442939   . |52 65 67 69 7>ascii "RegisterzClick"
00442947     |11            db 11
00442948     |00            db 00
00442949   . |BC304400      dd aLoNg3x_.004430BC
0044294D   . |0A            db 0A
0044294E   . |41 67 61 69 6>ascii "AgainClick"

原来是假的,还是有两个按钮的,只是Again那个东西隐藏起来而已。

上次首先按的是Cancella这个东西,所以这次首先从这里跟进去:

00442B98  /.  55            push ebp
00442B99  |.  8BEC          mov ebp,esp
00442B9B  |.  6A 00         push 0x0
00442B9D  |.  6A 00         push 0x0
00442B9F  |.  6A 00         push 0x0
00442BA1  |.  53            push ebx
00442BA2  |.  8BD8          mov ebx,eax
00442BA4  |.  33C0          xor eax,eax
00442BA6  |.  55            push ebp
00442BA7  |.  68 9C2C4400   push aLoNg3x_.00442C9C
00442BAC  |.  64:FF30       push dword ptr fs:[eax]
00442BAF  |.  64:8920       mov dword ptr fs:[eax],esp
00442BB2  |.  8D55 F8       lea edx,[local.2]
00442BB5  |.  8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC]
00442BBB  |.  E8 8006FEFF   call aLoNg3x_.00423240                   ;  将Codice读到[local.2]
00442BC0  |.  8B45 F8       mov eax,[local.2]
00442BC3  |.  50            push eax
00442BC4  |.  8D55 F4       lea edx,[local.3]
00442BC7  |.  8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8]
00442BCD  |.  E8 6E06FEFF   call aLoNg3x_.00423240                   ;  将Nome读到local.3
00442BD2  |.  8B45 F4       mov eax,[local.3]
00442BD5  |.  5A            pop edx
00442BD6  |.  E8 55FFFFFF   call aLoNg3x_.00442B30                   ;  下面是一个跳。这里跟进去,这个跟上次的长得差不多嘛
00442BDB  |.  84C0          test al,al
00442BDD  |.  0F84 86000000 je aLoNg3x_.00442C69
00442BE3  |.  8D45 FC       lea eax,[local.1]
00442BE6  |.  BA B02C4400   mov edx,aLoNg3x_.00442CB0                ;  ASCII "GREAT !!!",这个东西很刺眼啊
00442BEB  |.  E8 600CFCFF   call aLoNg3x_.00403850                   ;  这个是消息框
00442BF0  |.  8B45 FC       mov eax,[local.1]
00442BF3  |.  E8 78F9FFFF   call aLoNg3x_.00442570
00442BF8  |.  8D45 FC       lea eax,[local.1]
00442BFB  |.  E8 0410FCFF   call aLoNg3x_.00403C04                   ; 下面的内容是那个“LAMER”出来的原因
00442C00  |.  8B55 FC       mov edx,[local.1]
00442C03  |.  0FB612        movzx edx,byte ptr ds:[edx]
00442C06  |.  83C2 05       add edx,0x5
00442C09  |.  8810          mov byte ptr ds:[eax],dl
00442C0B  |.  8D45 FC       lea eax,[local.1]
00442C0E  |.  E8 F10FFCFF   call aLoNg3x_.00403C04
00442C13  |.  8B55 FC       mov edx,[local.1]
00442C16  |.  0FB652 01     movzx edx,byte ptr ds:[edx+0x1]
00442C1A  |.  83EA 11       sub edx,0x11
00442C1D  |.  8850 01       mov byte ptr ds:[eax+0x1],dl
00442C20  |.  8D45 FC       lea eax,[local.1]
00442C23  |.  E8 DC0FFCFF   call aLoNg3x_.00403C04
00442C28  |.  8B55 FC       mov edx,[local.1]
00442C2B  |.  0FB652 02     movzx edx,byte ptr ds:[edx+0x2]
00442C2F  |.  83C2 08       add edx,0x8
00442C32  |.  8850 02       mov byte ptr ds:[eax+0x2],dl
00442C35  |.  8D45 FC       lea eax,[local.1]
00442C38  |.  E8 C70FFCFF   call aLoNg3x_.00403C04
00442C3D  |.  8B55 FC       mov edx,[local.1]
00442C40  |.  0FB652 03     movzx edx,byte ptr ds:[edx+0x3]
00442C44  |.  83C2 04       add edx,0x4
00442C47  |.  8850 03       mov byte ptr ds:[eax+0x3],dl
00442C4A  |.  8D45 FC       lea eax,[local.1]
00442C4D  |.  E8 B20FFCFF   call aLoNg3x_.00403C04
00442C52  |.  8B55 FC       mov edx,[local.1]
00442C55  |.  0FB652 04     movzx edx,byte ptr ds:[edx+0x4]
00442C59  |.  83EA 02       sub edx,0x2
00442C5C  |.  8850 04       mov byte ptr ds:[eax+0x4],dl
00442C5F  |.  8B45 FC       mov eax,[local.1]
00442C62  |.  E8 09F9FFFF   call aLoNg3x_.00442570               ; 看这里就是那个“LAMER”弹出消息框的地方了
00442C67  |.  EB 10         jmp XaLoNg3x_.00442C79
00442C69  |>  BA C42C4400   mov edx,aLoNg3x_.00442CC4
00442C6E  |.  8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC]
00442C74  |.  E8 F705FEFF   call aLoNg3x_.00423270
00442C79  |>  33C0          xor eax,eax
00442C7B  |.  5A            pop edx
00442C7C  |.  59            pop ecx
00442C7D  |.  59            pop ecx
00442C7E  |.  64:8910       mov dword ptr fs:[eax],edx
00442C81  |.  68 A32C4400   push aLoNg3x_.00442CA3
00442C86  |>  8D45 F4       lea eax,[local.3]
00442C89  |.  BA 02000000   mov edx,0x2
00442C8E  |.  E8 490BFCFF   call aLoNg3x_.004037DC
00442C93  |.  8D45 FC       lea eax,[local.1]
00442C96  |.  E8 1D0BFCFF   call aLoNg3x_.004037B8
00442C9B  \.  C3            retn

在[00442B30]跟进去之后发现,就是一个比较,将输入的Nome和Codice比较,相同就弹框。

弹完框就没有然后了。

来到这个RegistrezClick,这个注册按钮是不是真的呢?

00442F28  /.  55            push ebp
00442F29  |.  8BEC          mov ebp,esp
00442F2B  |.  83C4 F8       add esp,-0x8
00442F2E  |.  53            push ebx
00442F2F  |.  56            push esi
00442F30  |.  33C9          xor ecx,ecx
00442F32  |.  894D F8       mov [local.2],ecx
00442F35  |.  8BD8          mov ebx,eax
00442F37  |.  33C0          xor eax,eax
00442F39  |.  55            push ebp
00442F3A  |.  68 22304400   push aLoNg3x_.00443022
00442F3F  |.  64:FF30       push dword ptr fs:[eax]
00442F42  |.  64:8920       mov dword ptr fs:[eax],esp
00442F45  |.  8D55 F8       lea edx,[local.2]
00442F48  |.  8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC]
00442F4E  |.  E8 ED02FEFF   call aLoNg3x_.00423240                   ;  将Codice给到Local.2
00442F53  |.  8B45 F8       mov eax,[local.2]
00442F56  |.  8D55 FC       lea edx,[local.1]
00442F59  |.  E8 FAF9FBFF   call aLoNg3x_.00402958                   ;  这里将输入的Codice转为16进制和判断输入的Codice是不是数字
00442F5E  |.  8BF0          mov esi,eax                              ;  将算出的16进制保存到esi
00442F60  |.  837D FC 00    cmp [local.1],0x0                ;  如果不是数字就继续往下
00442F64  |.  74 37         je XaLoNg3x_.00442F9D
00442F66  |.  B8 38304400   mov eax,aLoNg3x_.00443038                ;  ASCII "You MUST insert a valid Long Integer Value in the Code Editor... Thank you :)"
00442F6B  |.  E8 00F6FFFF   call aLoNg3x_.00442570
00442F70  |.  8D55 F8       lea edx,[local.2]
00442F73  |.  8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC]
00442F79  |.  E8 C202FEFF   call aLoNg3x_.00423240
00442F7E  |.  8B45 F8       mov eax,[local.2]
00442F81  |.  E8 06FBFFFF   call aLoNg3x_.00442A8C                   ;  这里计算出下面那个eax的值
00442F86  |.  A3 30584400   mov dword ptr ds:[0x445830],eax          ;  这里有个赋值给[445830]的,eax值从上面来
00442F8B  |.  BA 90304400   mov edx,aLoNg3x_.00443090
00442F90  |.  8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC]
00442F96  |.  E8 D502FEFF   call aLoNg3x_.00423270
00442F9B  |.  EB 6F         jmp XaLoNg3x_.0044300C                   ;  如果不是数字的话执行到这里就跳走,那么上面赋值一定要在不是数字这个情况下发生
00442F9D  |>  85F6          test esi,esi                             ;  如果Codice是数字就来到这里,看看计算结果,esi小于0就跳
00442F9F  |.  7E 5A         jle XaLoNg3x_.00442FFB
00442FA1  |.  8D55 F8       lea edx,[local.2]
00442FA4  |.  8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8]
00442FAA  |.  E8 9102FEFF   call aLoNg3x_.00423240                   ;
00442FAF  |.  8B4D F8       mov ecx,[local.2]
00442FB2  |.  8BD6          mov edx,esi
00442FB4  |.  A1 30584400   mov eax,dword ptr ds:[0x445830]          ;  这里要从[445830]取值了
00442FB9  |.  E8 EAF9FFFF   call aLoNg3x_.004429A8                   ;  这里要跟进去
00442FBE  |.  84C0          test al,al
00442FC0  |.  74 30         je XaLoNg3x_.00442FF2
00442FC2  |.  33D2          xor edx,edx
00442FC4  |.  8B83 CC020000 mov eax,dword ptr ds:[ebx+0x2CC]
00442FCA  |.  E8 6101FEFF   call aLoNg3x_.00423130
00442FCF  |.  B2 01         mov dl,0x1
00442FD1  |.  8B83 E8020000 mov eax,dword ptr ds:[ebx+0x2E8]
00442FD7  |.  E8 5401FEFF   call aLoNg3x_.00423130
00442FDC  |.  33D2          xor edx,edx
00442FDE  |.  8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8]
00442FE4  |.  8B08          mov ecx,dword ptr ds:[eax]
00442FE6  |.  FF51 60       call dword ptr ds:[ecx+0x60]
00442FE9  |.  33C0          xor eax,eax
00442FEB  |.  A3 30584400   mov dword ptr ds:[0x445830],eax
00442FF0  |.  EB 1A         jmp XaLoNg3x_.0044300C
00442FF2  |>  33C0          xor eax,eax
00442FF4  |.  A3 30584400   mov dword ptr ds:[0x445830],eax
00442FF9  |.  EB 11         jmp XaLoNg3x_.0044300C
00442FFB  |>  B8 9C304400   mov eax,aLoNg3x_.0044309C                ;  ASCII "Please... The Code Must be > 0"
00443000  |.  E8 6BF5FFFF   call aLoNg3x_.00442570
00443005  |.  33C0          xor eax,eax
00443007  |.  A3 30584400   mov dword ptr ds:[0x445830],eax
0044300C  |>  33C0          xor eax,eax
0044300E  |.  5A            pop edx
0044300F  |.  59            pop ecx
00443010  |.  59            pop ecx
00443011  |.  64:8910       mov dword ptr fs:[eax],edx
00443014  |.  68 29304400   push aLoNg3x_.00443029
00443019  |>  8D45 F8       lea eax,[local.2]
0044301C  |.  E8 9707FCFF   call aLoNg3x_.004037B8
00443021  \.  C3            retn

在[004429A8]跟了进去:

004429A8  /$  55            push ebp
004429A9  |.  8BEC          mov ebp,esp
004429AB  |.  83C4 F4       add esp,-0xC
004429AE  |.  53            push ebx
004429AF  |.  56            push esi
004429B0  |.  57            push edi
004429B1  |.  894D F8       mov [local.2],ecx
004429B4  |.  8955 FC       mov [local.1],edx                        ; 这个edx的值是进来这个函数的前2条语句赋值,
004429B7  |.  8BF8          mov edi,eax                              ;  eax的值是[445830],进函数前赋的值
004429B9  |.  8B45 F8       mov eax,[local.2]
004429BC  |.  E8 2712FCFF   call aLoNg3x_.00403BE8
004429C1  |.  33C0          xor eax,eax
004429C3  |.  55            push ebp
004429C4  |.  68 7A2A4400   push aLoNg3x_.00442A7A
004429C9  |.  64:FF30       push dword ptr fs:[eax]
004429CC  |.  64:8920       mov dword ptr fs:[eax],esp
004429CF  |.  8B45 F8       mov eax,[local.2]
004429D2  |.  E8 5D10FCFF   call aLoNg3x_.00403A34                   ;  获得Nome的长度
004429D7  |.  83F8 04       cmp eax,0x4                              ;  Nome的长度要大于4
004429DA  |.  0F8E 82000000 jle aLoNg3x_.00442A62
004429E0  |.  33DB          xor ebx,ebx
004429E2  |.  8B45 F8       mov eax,[local.2]
004429E5  |.  E8 4A10FCFF   call aLoNg3x_.00403A34                   ;  获得Nome的长度
004429EA  |.  85C0          test eax,eax
004429EC  |.  7E 38         jle XaLoNg3x_.00442A26
004429EE  |.  8945 F4       mov [local.3],eax
004429F1  |.  BE 01000000   mov esi,0x1
004429F6  |>  8B45 F8       /mov eax,[local.2]
004429F9  |.  E8 3610FCFF   |call aLoNg3x_.00403A34
004429FE  |.  83F8 01       |cmp eax,0x1
00442A01  |.  7C 1D         |jl XaLoNg3x_.00442A20
00442A03  |>  8B55 F8       |/mov edx,[local.2]
00442A06  |.  0FB65432 FF   ||movzx edx,byte ptr ds:[edx+esi-0x1]
00442A0B  |.  8B4D F8       ||mov ecx,[local.2]
00442A0E  |.  0FB64C01 FF   ||movzx ecx,byte ptr ds:[ecx+eax-0x1]
00442A13  |.  0FAFD1        ||imul edx,ecx
00442A16  |.  0FAFD7        ||imul edx,edi                           ; 这里用上了edi的值,也就是[445830]的值
00442A19  |.  03DA          ||add ebx,edx
00442A1B  |.  48            ||dec eax
00442A1C  |.  85C0          ||test eax,eax
00442A1E  |.^ 75 E3         |\jnz XaLoNg3x_.00442A03
00442A20  |>  46            |inc esi
00442A21  |.  FF4D F4       |dec [local.3]
00442A24  |.^ 75 D0         \jnz XaLoNg3x_.004429F6                  ;  上面的循环内容是:将每一个字符与整个字符串相乘
00442A26  |>  8BC3          mov eax,ebx                              ;  保存计算结果
00442A28  |.  99            cdq                                      ;  edx清0
00442A29  |.  33C2          xor eax,edx                              ;  eax不变
00442A2B  |.  2BC2          sub eax,edx
00442A2D  |.  B9 2A2C0A00   mov ecx,0xA2C2A
00442A32  |.  99            cdq
00442A33  |.  F7F9          idiv ecx
00442A35  |.  8BDA          mov ebx,edx                              ;  保存余数k2
00442A37  |.  8B45 FC       mov eax,[local.1]
00442A3A  |.  B9 59000000   mov ecx,0x59
00442A3F  |.  99            cdq
00442A40  |.  F7F9          idiv ecx
00442A42  |.  8BC8          mov ecx,eax                              ;  商
00442A44  |.  8B45 FC       mov eax,[local.1]
00442A47  |.  BE 50000000   mov esi,0x50
00442A4C  |.  99            cdq
00442A4D  |.  F7FE          idiv esi
00442A4F  |.  03CA          add ecx,edx                              ;  余数加上ecx
00442A51  |.  41            inc ecx                                  ;  ecx再加1
00442A52  |.  894D FC       mov [local.1],ecx                        ;  设此时ecx的值为k1
00442A55  |.  3B5D FC       cmp ebx,[local.1]                        ;  k1与k2比较
00442A58  |.  75 04         jnz XaLoNg3x_.00442A5E                   ;  不相等就跳
00442A5A  |.  B3 01         mov bl,0x1                               ;  如果这里执行了,函数外面的跳转才不会执行
00442A5C  |.  EB 06         jmp XaLoNg3x_.00442A64
00442A5E  |>  33DB          xor ebx,ebx
00442A60  |.  EB 02         jmp XaLoNg3x_.00442A64                   ;  省略后面内容

由上面计算的过程得到:

设:

Nome输入的内容为字符串数组Name

Name的长度是L

k1是一开始[local.1]的值,也就是edx的值。

k2是计算结果,有:

k2 = 0

x[i] = Name[i]*Name[t]*[445830]  t的取值范围是[0,L-1]

k2 += x[i]  i的取值范围是[0,L-1]

(这里是二重循环)

k2 %= 0xA2C2A

k1 = (k1/0x59)+(k1%0x50)+1

最后比较k2和k1是否相同。

至于[445830]的值是从哪里来?上面有讲。跟进去看看是怎么来的[00442A8C]:

00442A8C  /$  55            push ebp
00442A8D  |.  8BEC          mov ebp,esp
00442A8F  |.  51            push ecx
00442A90  |.  53            push ebx
00442A91  |.  56            push esi
00442A92  |.  57            push edi
00442A93  |.  8945 FC       mov [local.1],eax
00442A96  |.  8B45 FC       mov eax,[local.1]
00442A99  |.  E8 4A11FCFF   call aLoNg3x_.00403BE8
00442A9E  |.  33C0          xor eax,eax
00442AA0  |.  55            push ebp
00442AA1  |.  68 212B4400   push aLoNg3x_.00442B21
00442AA6  |.  64:FF30       push dword ptr fs:[eax]
00442AA9  |.  64:8920       mov dword ptr fs:[eax],esp
00442AAC  |.  8B45 FC       mov eax,[local.1]
00442AAF  |.  E8 800FFCFF   call aLoNg3x_.00403A34                   ;  计算个数
00442AB4  |.  83F8 05       cmp eax,0x5                              ;  Codice要大于5个字符
00442AB7  |.  7E 3D         jle XaLoNg3x_.00442AF6
00442AB9  |.  BE 7B030000   mov esi,0x37B
00442ABE  |.  8B45 FC       mov eax,[local.1]
00442AC1  |.  E8 6E0FFCFF   call aLoNg3x_.00403A34
00442AC6  |.  8BD8          mov ebx,eax
00442AC8  |.  4B            dec ebx                                  ;  设置循环次数
00442AC9  |.  85DB          test ebx,ebx
00442ACB  |.  7E 2B         jle XaLoNg3x_.00442AF8
00442ACD  |.  B9 01000000   mov ecx,0x1
00442AD2  |>  8B45 FC       /mov eax,[local.1]
00442AD5  |.  0FB60408      |movzx eax,byte ptr ds:[eax+ecx]
00442AD9  |.  BF 11000000   |mov edi,0x11
00442ADE  |.  33D2          |xor edx,edx
00442AE0  |.  F7F7          |div edi
00442AE2  |.  42            |inc edx
00442AE3  |.  8B45 FC       |mov eax,[local.1]
00442AE6  |.  0FB64408 FF   |movzx eax,byte ptr ds:[eax+ecx-0x1]
00442AEB  |.  0FAFD0        |imul edx,eax
00442AEE  |.  03F2          |add esi,edx
00442AF0  |.  41            |inc ecx
00442AF1  |.  4B            |dec ebx
00442AF2  |.^ 75 DE         \jnz XaLoNg3x_.00442AD2                   ; 通过上面部分算出一个值X
00442AF4  |.  EB 02         jmp XaLoNg3x_.00442AF8
00442AF6  |>  33F6          xor esi,esi
00442AF8  |>  8BC6          mov eax,esi
00442AFA  |.  B9 48710000   mov ecx,0x7148                            ;
00442AFF  |.  99            cdq
00442B00  |.  F7F9          idiv ecx
00442B02  |.  8BC2          mov eax,edx                               ; eax = x % 0x7148
00442B04  |.  99            cdq                                       ; 使得edx清0
00442B05  |.  33C2          xor eax,edx                               ; eax不变
00442B07  |.  2BC2          sub eax,edx                               ; eax还是不变
00442B09  |.  8BD8          mov ebx,eax
00442B0B  |.  33C0          xor eax,eax

这样就得到了[445830]的值是怎么算出来的。

由于输入的Codice不是数字才能使的[445830]的值不为0,然后就可以计算出上面的k1的值应为多少了

根据上面内容很容易就得到:

设:

Nome输入的内容为:ABCDEF

Codice输入的内容为:ABCDEF

按Registerz,弹出个错误窗口。点确定,因为弹出了这个窗口,才能使得[445830]的值不为0,这个值是通过

Codice的内容算出来的。点走错误窗口后,Codice青0,根据上面的计算过程,可以通过Nome的内容

得出k2的值,然后穷举,找到1个符合要求的k1,这个k1不唯一。

k1:1696639

将k1输入到Codice里面,然后点Registerz,界面发生了变化,again按钮出来了,Registerz窗口就不见了。

跟到AgainClick事件的话发现内容是和Registerz的内容差不多的。

004430BC  /.  55            push ebp
004430BD  |.  8BEC          mov ebp,esp
004430BF  |.  6A 00         push 0x0
004430C1  |.  6A 00         push 0x0
004430C3  |.  6A 00         push 0x0
004430C5  |.  53            push ebx
004430C6  |.  56            push esi
004430C7  |.  8BD8          mov ebx,eax
004430C9  |.  33C0          xor eax,eax
004430CB  |.  55            push ebp
004430CC  |.  68 2D324400   push aLoNg3x_.0044322D
004430D1  |.  64:FF30       push dword ptr fs:[eax]
004430D4  |.  64:8920       mov dword ptr fs:[eax],esp
004430D7  |.  8D55 F4       lea edx,[local.3]
004430DA  |.  8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC]
004430E0  |.  E8 5B01FEFF   call aLoNg3x_.00423240                   ;  将Codiece读到local.3
004430E5  |.  8B45 F4       mov eax,[local.3]
004430E8  |.  8D55 FC       lea edx,[local.1]
004430EB  |.  E8 68F8FBFF   call aLoNg3x_.00402958                   ;  用于将Codice转为16进制
004430F0  |.  8BF0          mov esi,eax                              ;  eax是输入Codies的16进制
004430F2  |.  837D FC 00    cmp [local.1],0x0
004430F6  |.  74 3A         je XaLoNg3x_.00443132
004430F8  |.  B8 44324400   mov eax,aLoNg3x_.00443244                ;  ASCII "You MUST insert a valid Long Integer Value in the Code Editor... Thank you :)"
004430FD  |.  E8 6EF4FFFF   call aLoNg3x_.00442570
00443102  |.  8D55 F4       lea edx,[local.3]
00443105  |.  8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC]
0044310B  |.  E8 3001FEFF   call aLoNg3x_.00423240
00443110  |.  8B45 F4       mov eax,[local.3]
00443113  |.  E8 74F9FFFF   call aLoNg3x_.00442A8C                   ; 还是有这个函数
00443118  |.  A3 30584400   mov dword ptr ds:[0x445830],eax          ; 还是赋值到这里来
0044311D  |.  BA 9C324400   mov edx,aLoNg3x_.0044329C
00443122  |.  8B83 DC020000 mov eax,dword ptr ds:[ebx+0x2DC]
00443128  |.  E8 4301FEFF   call aLoNg3x_.00423270
0044312D  |.  E9 DD000000   jmp aLoNg3x_.0044320F
00443132  |>  85F6          test esi,esi                             ;  测试是不是小于0
00443134  |.  0F8E C4000000 jle aLoNg3x_.004431FE
0044313A  |.  8D55 F4       lea edx,[local.3]
0044313D  |.  8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8]
00443143  |.  E8 F800FEFF   call aLoNg3x_.00423240                   ;  将Nome读到local.3
00443148  |.  8B4D F4       mov ecx,[local.3]
0044314B  |.  8BD6          mov edx,esi
0044314D  |.  A1 30584400   mov eax,dword ptr ds:[0x445830]
00443152  |.  E8 51F8FFFF   call aLoNg3x_.004429A8                   ;  这里计算的函数和Registerz的是一样的
00443157  |.  84C0          test al,al
00443159  |.  74 73         je XaLoNg3x_.004431CE

唯一不同的就是Nome的内容不能改变了,而且[445830]的值又重新变回0,有了上一步的经验,可以重复上面的步骤。

Codice:ABCDEF

然后还是会告诉你要输入数字,然后还是这个:

Codice:1696639

这个就是上面的k1,因为调用的函数还是一样的。

输入完后点Again,整张logo就出现了,而且标题栏也变成了:Cracked by ABCDEF

160 - 7 aLoNg3x.2相关推荐

  1. 160 - 6 aLoNg3x.1

    环境: Windows xp sp3 查壳,这次不用脱壳了,但是还是Delphi程序. 打开后看随便输点东西进去,发现Nome什么都能输入,但最多10个字符,而 Codice可以是数字或者是" ...

  2. Crackme006 - 全新160个CrackMe学习系列(图文|视频|注册机源码)

    知乎:逆向驿站 原文链接 CrackMe006 | 难度适中适合练手 |160个CrackMe深度解析(图文+视频+注册机源码) crackme006,依然是delphi的,而且没壳子,条线比较清晰, ...

  3. 逆向破解之160个CrackMe —— 007

    CrackMe -- 007 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  4. 160个crackme 持续更新(1\2\3\4\6\8\9)

    最近感觉自己啥都不会吧,就算会也就是点皮毛,还是练的太少了,从160个crackme开始 慢慢来吧,从简单的开始 1.Acid burn OD动态调试一下,靠字符串定位打断点,如下 跟进这个函数可以看 ...

  5. Crackme006 - 全新160个CrackMe深度解析系列(图文+视频+注册机源码)

    原文链接 CrackMe006 | 难度适中适合练手 |160个CrackMe深度解析(图文+视频+注册机源码) crackme006,依然是delphi的,而且没壳子,条线比较清晰,算法也不难,非常 ...

  6. 硬盘温度70度正常吗_70多岁老年人原来血压160,现在130正常吗?医生为你分析实情...

    70多岁的老年人,原来有高血压,高压160左右,现在是130左右,正常吗?这个问题问的太过笼统,我们只好通过这个问题,来分享一些老年高血压患者血压控制的一些知识点,希望能够对老年人的高血压控制,能够有 ...

  7. 微软语音扩展全球语言支持,发布160个新声音

    导语:全世界有数千种语言,最具语言天赋的人也只能说数十种,普通人能够学会两三种语言已属不易.然而,在科技日新月异的今天,具备自然语言对话能力的AI已经能够掌握上百种语言,扩展人类自身能力,为不同场景的 ...

  8. 5分钟带你读「大清」微积分!160多年前清朝数学家撰写文言文版高等数学

     视学算法报道   编辑:小咸鱼 好困 [新智元导读]你有见过160多年前清朝数学家写的微积分书吗?这可能是最难懂的高数教材了,堪称天书!近日,网上流传着一本清朝的微积分课本,其中的所有数学表达式都是 ...

  9. 机器学习160个常见问题.pdf

    来自公众号:机器学习算法与Python实战 原文链接:https://hackernoon.com/160-data-science-interview-questions-415s3y2a (Ale ...

最新文章

  1. 向sqlce 里插入和取出一个Image
  2. python进制转化大全
  3. 电脑删除linux系统,我的电脑现在装有XP和Linux两个系统,现在想删除Linux系统,开机不用选直接进入XP。不知怎么做??...
  4. 通用!Python保存一个对象的方式
  5. 一条SQL语句执行得很慢的原因有哪些?
  6. Linux下MongoDB安装和配置详解
  7. Vue中的join(),reverse()与 split()函数
  8. Ext.core.DomHelper 可以透明地操作HTML或者DOM
  9. [ACM_几何] F. 3D Triangles (三维三角行相交)
  10. UML学习(一)类图和对象图
  11. Linux Server - NIS
  12. 2017河南工业大学玲珑杯赛后总结
  13. 史上最全的Python定量金融三方库汇总
  14. 计算机组成原理 | 穿越功耗墙,我们该从哪些方面提升“性能”?
  15. 并非都完美,笔记本8大致命缺陷曝光
  16. kubelet源码分析(二)之 NewMainKubelet
  17. 关于Directx中shader的输入与输出
  18. JAVA file列出所有文件_用Java代码列出一个目录下所有的文件
  19. 读书笔记-Coordinated Deep Reinforcement Learners for Traffic Light Control
  20. 售后回访:汽车行业电话回访满意度及售后服务流程

热门文章

  1. java maven 项目依赖关系,java – 关于依赖关系共享的Maven多模块项目组合
  2. 教你玩转CSS padding(填充)
  3. mysql加上判断_在mysql中where加if判断
  4. 字符集_第07期:有关 MySQL 字符集的 SQL 语句
  5. js实现复制粘贴功能
  6. uestc summer training #2
  7. Spring @Value取值为null或@Autowired注入失败
  8. vue2+node+mysql demo总结
  9. 【BZOJ2004】[Hnoi2010]Bus 公交线路 状压+矩阵乘法
  10. Django 和 html