160 - 7 aLoNg3x.2

环境:

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 中的国际化Message的简单例子(ApplicationContext) 不跟框架集成的版本

首先&#xff0c;建立一个描述message的XML文件&#xff0c;名为messages.xml <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-bean…

简述进程间通信方式

进程间通信方式通常有共享内存 信号量 消息队列 管道 FIFO Socket等几种。 共享内存的模型&#xff0c;它是最有效率的进程间通信方式进程间信号量是进程间同步主要方式&#xff0c;信号量操作为负的时候&#xff0c;进程阻塞。直到信号量为正 内存映射是一种特殊的共享内存…

辅助的写与数据库交互的XML文件的类

现在企业级WEB应用中与数据库交互的XML文件都是通过插件自动生成的&#xff0c;不过有些时候修改比较老的项目的时候也是需要手动的来做这一动作的&#xff01;如下代码就是一个实现上述的功能的辅助类&#xff0c;在此记录一下以备后用&#xff01; package com.cn.common.uti…

160 - 8 Andrnalin.1

环境&#xff1a; Windows xp sp3 打开&#xff0c;就一个Key输入框&#xff0c;输入&#xff1a;goodname&#xff0c;点OK&#xff0c;弹出一个 不明文字的框&#xff0c;反正肯定不对。 查壳&#xff0c;无壳的vb程序。OD载入&#xff1a; 查找字串&#xff0c;翻到最下…

C++ 虚函数表解析

C 虚函数表解析 陈皓 http://blog.csdn.net/haoel 前言 C中的虚函数的作用主要是实现了多态的机制。关于多态&#xff0c;简而言之就是用父类型别的指针指向其子类的实例&#xff0c;然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”&#x…

160 - 9 Andrnalin.2

环境&#xff1a; Windows xp sp3 打开&#xff0c;这次升级了&#xff0c;有个Name和一个Key&#xff0c;输入&#xff1a; Name&#xff1a;goodname Key&#xff1a;12345678 肯定错误。拿到错误信息的字符串 查壳&#xff0c;无壳的VB程序。 直接OD载入&#xff0c;字…

[PALAPALA] 无题 - 外来的和尚会念经

手机, 现代人响当当的必须品, 尤其在移动App流行的大环境之下显得更为重要. 我, 并不是一个重度依赖手机的机粉. 但我对手机的差异化敏感度很高... 安卓手机, 我不喜欢, 因为满大街泛滥&#xff0c;折腾过多... 苹果手机, 我不喜欢, 因为满大街泛滥&#xff0c;bug过多..... 相…

HTTP协议 (四) 缓存

HTTP协议 (四) 缓存 阅读目录 缓存的概念缓存的好处Fiddler可以方便地查看缓存的header如何判断缓存新鲜度通过最后修改时间&#xff0c;判断缓存新鲜度与缓存相关的headerETag浏览器不使用缓存直接使用缓存&#xff0c;不去服务器端验证如何设置IE不使用缓存公有缓存和私有缓存…

160 - 10 Andrénalin.3

环境&#xff1a; Windows xp sp3 打开&#xff0c;是只有一个key&#xff0c;输入个goodname试试&#xff0c;错误。。。记下错误信息 查壳&#xff0c;无壳的VB程序。 查找字符串&#xff1a; 00402036 UNICODE "kXy^rO|*yXo*m\kMuOn*" 00402090 UNICODE &qu…

160 - 11 Andrnalin.4

环境&#xff1a; Windows xp sp3 打开&#xff0c;这次的界面炫酷多了&#xff0c;就像输保险箱密码。 旁边一个“UNREGISTRIERT”表示还没注册 输入个666666&#xff0c;没反应又没有确认按钮&#xff0c;可以猜测是用timer来检测输入的正确性 查壳&#xff0c;无壳的VB程…

ZooKeeper启动过程2:FastLeaderElection

前一篇文章中说到&#xff0c;启动ZooKeeper集群时&#xff0c;需要分别启动集群中的各个节点&#xff0c;各节点以QuorumPeer的形式启动&#xff0c;最后到达startLeaderElection和lookForLeader。 先说startLeaderElection 首先&#xff0c;初始化节点自身的currentVote【当前…

C++编程调试秘笈(第1次阅读)

阅读时间&#xff1a; 2017-4-17 --- 2017-4-19 第一次阅读《C编程调试秘笈》&#xff0c;可能是因为对项目开发的经验不足&#xff08;最近只是在做简单的五子棋&#xff09;&#xff0c;使得对里面很多的知识点了解得不是很深。 《C编程调试秘笈》讲的内容个人觉得与调试的技…

Web Component 文章

周末无意中了解了Web Component的概念。 http://blog.amowu.com/2013/06/web-components.html http://www.v2ex.com/t/69389 http://www.infoq.com/cn/news/2013/06/webcomponents Shadow DOM http://www.toobug.net/article/what_is_shadow_dom.html http://www.html5rocks.co…

遮罩效果 css3

CSS3提供了遮罩效果&#xff0c;这是以前CSS2中比较难实现的一个新特性&#xff0c;配合SVG或者canvas同样也可以实现遮罩效果&#xff0c;他的效果就如下图所示: 简单的说就是在一个层上面加一个过滤层&#xff0c;过滤层透明度越低&#xff0c;底层就显示的越多&#xff0c;反…

调试九法(第1次阅读)

阅读时间&#xff1a; 2017年4月19日 --- 2017年4月22日 第一次看到这本书的时候&#xff0c;是在网上看到它被评论得十分优秀&#xff0c;只要掌握了书中的方法&#xff0c;就能找到所有的BUG。我就是这样被吸引过来的。 因为是调试9法&#xff0c;所以总共讲了调试的时候注意…

Oracle11g密码区分大小写导致database link无法连接

Oracle11g的密码默认是区分大小写的&#xff0c;该特性通过初始化参数sec_case_sensitive_logon控制&#xff0c;默认TRUE表示区分大小写。但是Oracle11g之前的版本密码都是不区分大小写的&#xff0c;所以在Oracle10g等以前版本创建到Oracle11g的database link时&#xff0c;可…

OC-深浅复制

【OC学习-26】对象的浅拷贝和深拷贝——关键在于属性是否可被拷贝 对象的拷贝分为浅拷贝和深拷贝&#xff0c;浅拷贝就是只拷贝对象&#xff0c;但是属性不拷贝&#xff0c;拷贝出来的对象和原来的对象共用属性&#xff0c;即指向同一个属性地址。深拷贝则相当于不仅拷贝了一个…

计算机科学导论(第一次阅读)

时间&#xff1a; 2017年4月22日----2017年4月26 这是一本计算机入门书籍&#xff0c;粗略地描述了计算机各个方面的内容。当然对于一些十分复杂的知识&#xff0c;也仅仅是大概描述了这方面知识的一些了解知识。

配置SQLServer,允许远程连接

需要别人远程你的数据库&#xff0c;首先需要的是在一个局域网内&#xff0c;或者连接的是同一个路由器&#xff0c;接下来就是具体步骤&#xff1a; &#xff08;一&#xff09;首先是要检查SQLServer数据库服务器中是否允许远程链接。其具体操作为&#xff1a; &#xff08;1…

弹出打开/保存文件对话框 选择文件夹对话框

打开/保存文件对话框: CFileDialog::CFileDialog(BOOL bOpenFileDialog, //为TRUE则显示打开对话框&#xff0c;为FALSE则显示保存对话文件对话框LPCTSTR lpszDefExt NULL, //默认的文件扩展名LPCTSTR lpszFileName NULL, //默认的文件名DWORD dwFlags OFN_HIDEREADONLY | O…