= 65、Tcp to Serial 1.24 for Win95 ======================================================== Tcp to Serial 1.24 for Win95 Cracked by Hambo.H Writted in 19/9/1997 执行文件:Tcptoser.exe (长度:50,176 Bytes) (1)注册: 设BPX GetWindowTextA 按下Register,被WinIce拦截。 然后按一下F12,再按多几下F8,见到如下的程序: 0137:004035C4 PUSH 0A 0137:004035C6 PUSH EAX 0137:004035C7 PUSH 00408068 0137:004035CC CALL 00404150 //判断输入的License Key是否全部是数字?且>七位数? 0137:004035D1 ADD ESP,0C 0137:004035D4 CMP EAX,000F4240 0137:004035D9 JAE 00403611 //是就跳转。 0137:004035DB MOV DWORD PTR [00408078],00000000 ... ... 0137:00403617 LEA EDX,[ECX*8+ECX] 0137:0040361A LEA ESI,[EDX*8+ECX] 0137:0040361D LEA EDX,[ESI*2+ECX] 0137:00403620 ADD EDX,EDX 0137:00403622 PUSH EDX 0137:00403623 PUSH EAX 0137:00403624 CALL 00403EC0 //License Key的运算。 0137:00403629 ADD ESP,08 0137:0040362C TEST EDX,EDX 0137:0040362E JZ 00403666 //成功就跳转。 0137:00403630 MOV DWORD PTR [00408078],00000000 0137:0040363A PUSH 00 0137:0040363C PUSH 004081B8 0137:00403641 PUSH 004081D8 0137:00403646 PUSH EBP 0137:00403647 CALL [USER32!MessageBoxA] 修改: :a 0137:0040362E 0137:0040362E jnz 00403666 find : 83 C4 08 85 D2 74 36 edit : -- -- -- -- -- 75 -- 0137:00403666 MOV EDI,00408394 0137:0040366B MOV ECX,00000005 0137:00403670 MOV ESI,[ESP+10] 0137:00403674 REPZ CMPSB //进行字符的比较。 0137:00403676 JNZ 004036AB //不符合就跳转。 0137:00403678 PUSH 01 0137:0040367A MOV EAX,[0040A080] 0137:0040367F MOV DWORD PTR [00408078],00000001 :a 0137:00403676 0137:00403676 jz 004036ab find : 75 33 6A 01 A1 80 A0 40 edit : 74 -- -- -- -- -- -- -- 到此处只是完成了整个注册过程的1/4。 ==================================================================================== (2)去掉按OK时弹出的对话框: 设bpx messageboxa 0137:00403538 CALL EDI 0137:0040353A MOV [00408058],EAX 0137:0040353F CALL 004011E0 0137:00403544 CMP DWORD PTR [00408078],00 0137:0040354B JNZ 00403560 <====================== 0137:0040354D PUSH 00 || 0137:0040354F PUSH 004081B8 || 0137:00403554 PUSH 00408088 || 0137:00403559 PUSH EBP || 0137:0040355A CALL [USER32!MessageBoxA] <==在此处被截住,再往上看看。 0137:00403560 PUSH ESI 0137:00403561 PUSH EBP 0137:00403562 CALL [USER32!EndDialog] 0137:00403568 JMP 004036FB 0137:0040356D CMP DWORD PTR [00408078],00 0137:00403574 JNZ 0040358F :a 0137:0040354B 0137:0040354B jz 00403560 find : 40 00 00 75 13 6A 00 edit : -- -- -- 74 -- -- -- ============================================================================= (3)使按Preference时也显示注册: 由于这个程序多处检查注册码,所以要修改的地方有好几处。 设 Bpx setwindowtexta 按下Preference, 被WinIce拦截。 BD * 把拦中断的功能关掉 按F10继续........按好几下才见到如下程序: 0137:00403733 PUSH EAX 0137:00403734 PUSH ECX 0137:00403735 PUSH EDX 0137:00403736 CALL 00403180 <==在这里设一个拦截点 0137:0040373B ADD ESP,0C 0137:0040373E RET 0010 0137:00403741 MOV ECX,[ESP+0C] 0137:00403745 MOV EAX,ECX 设BPX 0137:00403736 被WinIce拦截,BD * 把拦中断的功能关掉 按F8进入,按好几十下才见到如下程序: 0137:004033D5 MOV EAX,[00408058] 0137:004033DA PUSH EAX 0137:004033DB PUSH 0000014E 0137:004033E0 PUSH EBP 0137:004033E1 CALL ESI 0137:004033E3 CMP DWORD PTR [00408078],00 0137:004033EA JZ 004033F3 <===修改这里 0137:004033EC PUSH 00408DC0 0137:004033F1 JMP 004033F8 0137:004033F3 PUSH 00408DB0 0137:004033F8 PUSH 00000406 0137:004033FD PUSH EDI 0137:004033FE CALL EBX 0137:00403400 PUSH EAX 0137:00403401 MOV ESI,[USER32!SetWindowTextA] 0137:00403407 CALL ESI :a 0137:004033EA 0137:004033EA jnz 004033f3 find : 74 07 68 C0 8D 40 edit : 75 -- -- -- -- -- ============================================================================================ (4)去掉开头的注册警告框 重新进入程序 设bpx messageboxa,按CTRL-D继续回到程序。 被WinIce 拦截 .............. 0137:00403891 CALL 00401C60 0137:00403896 ADD ESP,04 0137:00403899 CMP DWORD PTR [00408078],00 0137:004038A0 JZ 004038BD <==== 从这里跳转到下面的程序 0137:004038A2 CMP DWORD PTR [00408060],00 0137:004038A9 JZ 004038F4 0137:004038AB PUSH ESI 0137:004038AC CALL 00403900 0137:004038B1 ADD ESP,04 0137:004038B4 MOV EAX,00000001 0137:004038B9 POP EDI 0137:004038BA POP ESI 0137:004038BB POP EBX 0137:004038BC RET 0137:004038BD CMP DWORD PTR [00408060],00 0137:004038C4 JZ 004038E1 <==== 从这里跳转到下面的程序 0137:004038C6 CMP DWORD PTR [0040807C],00 0137:004038CD JNZ 004038E1 0137:004038CF PUSH ESI 0137:004038D0 CALL 00403900 0137:004038D5 ADD ESP,04 0137:004038D8 MOV EAX,00000001 0137:004038DD POP EDI 0137:004038DE POP ESI 0137:004038DF POP EBX 0137:004038E0 RET 0137:004038E1 PUSH 00 0137:004038E3 PUSH 004081B8 0137:004038E8 PUSH 00408088 0137:004038ED PUSH ESI 0137:004038EE CALL [USER32!MessageBoxA] <==在此处被拦截,再往上看 0137:004038F4 MOV EAX,00000001 0137:004038F9 POP EDI 0137:004038FA POP ESI 0137:004038FB POP EBX 0137:004038FC RET 只要修改第一个跳转就可以了,绝对不能该第二个跳转,否则Preference那项就变成虚按钮。 :a 0137:004038A0 0137:004038A0 jnz 004038BD find : 83 3D 78 80 40 00 00 74 1B edit : -- -- -- -- -- -- -- 75 -- ====================================================================================== (5)下面一段程序为License Key的运算。 0137:00403EC0 MOV ECX,[ESP+04] 0137:00403EC4 SUB ESP,08 0137:00403EC7 MOV EAX,ECX 0137:00403EC9 PUSH ESI 0137:00403ECA CDQ 0137:00403ECB MOV ESI,[ESP+14] 0137:00403ECF IDIV ESI 0137:00403ED1 MOV [ESP+04],EAX 0137:00403ED5 MOV EAX,ECX 0137:00403ED7 CDQ 0137:00403ED8 IDIV ESI 0137:00403EDA MOV [ESP+08],EDX 0137:00403EDE TEST ECX,ECX 0137:00403EE0 JGE 00403EEE 0137:00403EE2 TEST EDX,EDX 0137:00403EE4 JLE 00403EEE 0137:00403EE6 INC DWORD PTR [ESP+04] 0137:00403EEA SUB [ESP+08],ESI 0137:00403EEE MOV EAX,[ESP+04] 0137:00403EF2 MOV EDX,[ESP+08] 0137:00403EF6 POP ESI 0137:00403EF7 ADD ESP,08 0137:00403EFA RET -- Hambo.H E-mail: hambo@nenpub.szptt.net.cn ICQ: 2723066