找回密码
 注册
搜索
热搜: 回贴

破解AdSubtract PRO Version 2.04(3千字),AdSubtract,加密算法

2010-1-22 18:40| 发布者: admin| 查看: 106| 评论: 0|原作者: 小寳寳


破解AdSubtract PRO Version 2.04(3千字),AdSubtract,加密算法
2008年06月23日 星期一 下午 12:50
破解AdSubtract PRO Version 2.04

其实主程序文件是ctlpanel.dll这个动态库文件.



这是一个非常好的去广告窗程序!

016F:6000A302 CMP EDI,0403

016F:6000A308 JZ NEAR 6000A46B 不能跳跳了你就要数入注册码拉!

016F:6000A30E CMP EDI,074C

016F:6000A314 JNG NEAR 6000A559

016F:6000A31A CMP EDI,074F

016F:6000A320 JG NEAR 6000A559

016F:6000A326 PUSH DWORD 60052D50

016F:6000A32B LEA ECX,[ESP 2C]

016F:6000A32F CALL 60010370

016F:6000A334 LEA EDX,[ESP 10]

016F:6000A338 XOR EBP,EBP

016F:6000A33A PUSH EDX

016F:6000A33B PUSH DWORD 60052D40

016F:6000A340 LEA ECX,[ESP 30]

016F:6000A344 MOV [ESP 01CC],EBP

016F:6000A34B CALL 600112D0

016F:6000A350 CMP DWORD [ESP 10],BYTE 04

016F:6000A355 JNL 6000A370 一定要跳转不然功能有限制!

016F:6000A357 LEA ECX,[ESP 28]

016F:6000A35B MOV DWORD [ESP 01C4],FFFFFFFF

016F:6000A366 CALL 60010440

016F:6000A36B JMP 6000A559

016F:6000A370 OR EBX,BYTE -01

016F:6000A373 LEA ECX,[ESP 28]

016F:6000A377 MOV [ESP 01C4],EBX

016F:6000A37E CALL 60010440

016F:6000A383 MOV ECX,[ESI 3C]

016F:6000A386 CMP ECX,EBP

016F:6000A388 JZ 6000A3F6

016F:6000A38A CMP WORD [ESP 01CC],03F0

016F:6000A394 JNZ 6000A3C2

016F:6000A396 PUSH BYTE 01

016F:6000A398 CALL 6002FD1B

016F:6000A39D MOV EAX,[ESI 3C]

016F:6000A3A0 MOV ECX,[EAX 1C]

016F:6000A3A3 PUSH ECX

016F:6000A3A4 CALL `USER32!SetForegroundWindow`

016F:6000A3AA MOV EAX,[ESI 3C]

016F:6000A3AD MOV EDX,[EAX 1C]

016F:6000A3B0 PUSH EDX

016F:6000A3B1 CALL `USER32!SetActiveWindow`

016F:6000A3B7 PUSH EAX

016F:6000A3B8 CALL 6002B848

016F:6000A3BD JMP 6000A559

016F:6000A3C2 CALL 6000E220

016F:6000A3C7 TEST EAX,EAX

016F:6000A3C9 JZ NEAR 6000A570

016F:6000A3CF MOV EAX,[ESI 3C]

016F:6000A3D2 LEA ECX,[ESP 18]

016F:6000A3D6 PUSH ECX

016F:6000A3D7 MOV EDX,[EAX 1C]

016F:6000A3DA PUSH EDX

016F:6000A3DB CALL `USER32!GetWindowRect`

016F:6000A3E1 MOV ECX,[ESI 3C]

016F:6000A3E4 PUSH BYTE 01

016F:6000A3E6 MOV EAX,[ECX]

016F:6000A3E8 CALL NEAR [EAX 74]

016F:6000A3EB MOV ECX,[ESI 3C]

016F:6000A3EE MOV EDX,[ECX]

016F:6000A3F0 CALL NEAR [EDX 58]

016F:6000A3F3 MOV [ESI 3C],EBP

016F:6000A3F6 CMP [ESI 3C],EBP

016F:6000A3F9 JNZ NEAR 6000A559

016F:6000A3FF PUSH EDI

016F:6000A400 PUSH EBP

016F:6000A401 PUSH DWORD 60052214

016F:6000A406 LEA ECX,[ESP 34]

016F:6000A40A CALL 6000DE00

016F:6000A40F MOV EAX,[ESP 68]

016F:6000A413 MOV DWORD [ESP 01C4],01

016F:6000A41E OR AL,02

016F:6000A420 MOV [ESP 68],EAX

016F:6000A424 CALL 6003C4E3

016F:6000A429 MOV EAX,[EAX 08]

016F:6000A42C PUSH EBP

016F:6000A42D PUSH BYTE 10

016F:6000A42F PUSH BYTE 10

016F:6000A431 PUSH BYTE 01

016F:6000A433 PUSH DWORD 8E

016F:6000A438 PUSH EAX

016F:6000A439 CALL `USER32!LoadImageA`

016F:6000A43F MOV [ESP 74],EAX

016F:6000A443 LEA EAX,[ESP 28]

016F:6000A447 LEA ECX,[ESP 28]

016F:6000A44B MOV [ESI 3C],EAX

016F:6000A44E CALL 600387D8

016F:6000A453 LEA ECX,[ESP 28]

016F:6000A457 MOV [ESI 3C],EBP

016F:6000A45A MOV [ESP 01C4],EBX

016F:6000A461 CALL 6000E120 注册号:ab



a和b是32进制数。



设magic[]={0x5733a0c3, 0x155cf8be, 0xffc55d8d, 0x11cf424, 0x7117d5b1, 0x4baf5541, 0x83179f31, 0x20f3f593};



md5init();

md5padding(magic);

md5padding(a);

md5padding(magic);

md5finish();

s=md5[0~4];



如果s==b,则认为注册成功。
象下面这样的即使用了不可逆算法又有什么难度呢?还不是轻而易举地写出注册机来?



if ( MD5(UserName) == SerialNumber )

{

Registered = TRUE;

}

else

{

Registered = FALSE;

}



而象下面的即使软件作者自己是最天才伟大的数学家也无法弄出注册机来,这样有什么意义呢?



if ( MD5(SerialNumber) == UserName )

{

Registered = TRUE;

}

else

{

Registered = FALSE;

}



若用MD5来对指令机器码进行运算,软件作者自己也无法搞定。


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 01:38 , Processed in 0.294715 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部