软件名称: asabili 软件版本: 1.0 软件类别: 娱乐游戏 应用平台: WIN9X/WINNT/WIN2K/WINXP 授权形式: 共享 软件介绍: 日本人做的一个台球游戏,分为9球、抢黑8、计分赛三种玩法。可惜的是未注册版本只能玩演示游戏解解馋了。解压到任意文件夹即可使用。这是我的第一个汉化作品,图片中的文字和帮助文件都没有汉化。 下断点bpx GetDlgItemTextA 我是下的bpx messageboxa,然后pmoudle以后提示注册失败,在向上找跳转,我个人习惯这样,方法很多,随便找一种你喜欢的. 00408C08 > 8BB424 0C03000>MOV ESI,DWORD PTR SS:[ESP+30C] ; Case 1 of switch 00408BA3 00408C0F . 8B3D D4E14000 MOV EDI,DWORD PTR DS:[<&user32.getdlgite> 00408C15 . 8D9424 0801000>LEA EDX,DWORD PTR SS:[ESP+108] 00408C1C . 68 00010000 PUSH 100 ; /Count = 100 (256.) 00408C21 . 52 PUSH EDX ; |Buffer 00408C22 . 68 EB030000 PUSH 3EB ; |ControlID = 3EB (1003.) 00408C27 . 56 PUSH ESI ; |hWnd 中断到这里: ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 00408C28 . FFD7 CALL EDI ; \GetDlgItemTextA 00408C2A . 8D8424 0801000>LEA EAX,DWORD PTR SS:[ESP+108] 00408C31 . 50 PUSH EAX 00408C32 . E8 F9FDFFFF CALL ASABILLI.00408A30 <---关键call,跟进 00408C37 . 83C4 04 ADD ESP,4 00408C3A . 85C0 TEST EAX,EAX <---关键比较点 00408C3C . 68 00010000 PUSH 100 ; /Count = 100 (256.) 00408C41 . 75 54 JNZ SHORT ASABILLI.00408C97 ; |<---关键跳转点 00408C43 . 8B15 FC404100 MOV EDX,DWORD PTR DS:[4140FC] ; |ASABILLI.00400000 00408C49 . 8B3D 84E14000 MOV EDI,DWORD PTR DS:[<&user32.loadstrin>; | 00408C4F . 8D8C24 0C02000>LEA ECX,DWORD PTR SS:[ESP+20C] ; | 00408C56 . 51 PUSH ECX ; |Buffer 00408C57 . 6A 03 PUSH 3 ; |RsrcID = STRING "注册码" 00408C59 . 52 PUSH EDX ; |hInst => 00400000 00408C5A . FFD7 CALL EDI ; \LoadStringA 00408C5C . 8B0D FC404100 MOV ECX,DWORD PTR DS:[4140FC] ; ASABILLI.00400000 00408C62 . 8D4424 08 LEA EAX,DWORD PTR SS:[ESP+8] 00408C66 . 68 00010000 PUSH 100 ; /Count = 100 (256.) 00408C6B . 50 PUSH EAX ; |Buffer 00408C6C . 6A 02 PUSH 2 ; |RsrcID = STRING "快乐码" 00408C6E . 51 PUSH ECX ; |hInst => 00400000 00408C6F . FFD7 CALL EDI ; \LoadStringA 00408C71 . 8D5424 08 LEA EDX,DWORD PTR SS:[ESP+8] 00408C75 . 6A 10 PUSH 10 ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL 00408C77 . 8D8424 0C02000>LEA EAX,DWORD PTR SS:[ESP+20C] ; | 00408C7E . 52 PUSH EDX ; |Title 00408C7F . 50 PUSH EAX ; |Text 00408C80 . 56 PUSH ESI ; |hOwner 00408C81 . FF15 B8E14000 CALL DWORD PTR DS:[<&user32.messageboxa>>; \MessageBoxA 00408C87 . 5F POP EDI 00408C88 . B8 01000000 MOV EAX,1 00408C8D . 5E POP ESI 00408C8E . 81C4 00030000 ADD ESP,300 00408C94 . C2 1000 RETN 10 00408C97 > 68 00464100 PUSH ASABILLI.00414600 00408C9C . 68 EA030000 PUSH 3EA 00408CA1 . 56 PUSH ESI 00408CA2 . FFD7 CALL EDI 00408CA4 . 6A 08 PUSH 8 00408CA6 . 68 00414100 PUSH ASABILLI.00414100 00408CAB . 68 EB030000 PUSH 3EB 00408CB0 . 56 PUSH ESI 00408CB1 . FFD7 CALL EDI ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 跟进的关键call,CALL ASABILLI.00408A30 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 00408A30 /$ 53 PUSH EBX 00408A31 |. 56 PUSH ESI 00408A32 |. 8B7424 0C MOV ESI,DWORD PTR SS:[ESP+C] 00408A36 |. 57 PUSH EDI 00408A37 |. 8A46 07 MOV AL,BYTE PTR DS:[ESI+7] <---取注册码存放地址第8位 00408A3A |. 84C0 TEST AL,AL 比较是否为0 00408A3C |. 0F85 ED000000 JNZ ASABILLI.00408B2F <---如果有第8位则失败 00408A42 |. 33FF XOR EDI,EDI 00408A44 |> 8A0437 /MOV AL,BYTE PTR DS:[EDI+ESI] 00408A47 |. 50 |PUSH EAX 00408A48 |. E8 C3FFFFFF |CALL ASABILLI.00408A10 <---16进制转10进制 00408A4D |. 83C4 04 |ADD ESP,4 00408A50 |. 3C 24 |CMP AL,24 00408A52 |. 0F87 D7000000 |JA ASABILLI.00408B2F 00408A58 |. 47 |INC EDI 00408A59 |. 83FF 07 |CMP EDI,7 00408A5C |.^7C E6 \JL SHORT ASABILLI.00408A44 00408A5E |. 8A4E 05 MOV CL,BYTE PTR DS:[ESI+5] <---取第注册码6位 00408A61 |. 51 PUSH ECX 00408A62 |. E8 A9FFFFFF CALL ASABILLI.00408A10 <---16进制转10进制 00408A67 |. 8A56 02 MOV DL,BYTE PTR DS:[ESI+2] <---取第注册码2位 00408A6A |. 8AD8 MOV BL,AL 00408A6C |. 52 PUSH EDX 00408A6D |. 81E3 FF000000 AND EBX,0FF 00408A73 |. E8 98FFFFFF CALL ASABILLI.00408A10 <---16进制转10进制 00408A78 |. 25 FF000000 AND EAX,0FF 00408A7D |. B9 24000000 MOV ECX,24 <---24H入ecx 00408A82 |. 8D4458 26 LEA EAX,DWORD PTR DS:[EAX+EBX*2+26] <---eax=eax(第3位)+ebx(第6位)*2+26 00408A86 |. 99 CDQ 00408A87 |. F7F9 IDIV ECX edx=eax-24(我是观察出来的,请各位指教,IDIV ECX这句的意思) 00408A89 |. 8BFA MOV EDI,EDX 00408A8B |. 8A16 MOV DL,BYTE PTR DS:[ESI] <---取第注册码1位 00408A8D |. 52 PUSH EDX 00408A8E |. E8 7DFFFFFF CALL ASABILLI.00408A10 <---16进制转10进制 00408A93 |. 25 FF000000 AND EAX,0FF 00408A98 |. 83C4 0C ADD ESP,0C 00408A9B |. 3BC7 CMP EAX,EDI <---第1位与第3位+第6位*2+26-24比较 00408A9D |. 0F85 8C000000 JNZ ASABILLI.00408B2F <---关键比较点,跳则失败 00408AA3 |. 8A46 04 MOV AL,BYTE PTR DS:[ESI+4] <---取第注册码5位 00408AA6 |. 50 PUSH EAX 00408AA7 |. E8 64FFFFFF CALL ASABILLI.00408A10 <---16进制转10进制 00408AAC |. 8A4E 01 MOV CL,BYTE PTR DS:[ESI+1] <---取第注册码2位 00408AAF |. 8AD8 MOV BL,AL 00408AB1 |. 51 PUSH ECX 00408AB2 |. 81E3 FF000000 AND EBX,0FF 00408AB8 |. E8 53FFFFFF CALL ASABILLI.00408A10 <---16进制转10进制 00408ABD |. 25 FF000000 AND EAX,0FF 00408AC2 |. B9 24000000 MOV ECX,24 00408AC7 |. 8D4458 26 LEA EAX,DWORD PTR DS:[EAX+EBX*2+26] <---eax=eax(第2位)+ebx(第5位)*2+26 00408ACB |. 99 CDQ 00408ACC |. F7F9 IDIV ECX <---edx=eax-24 00408ACE |. 8BFA MOV EDI,EDX 00408AD0 |. 8A56 06 MOV DL,BYTE PTR DS:[ESI+6] <---取第注册码7位 00408AD3 |. 52 PUSH EDX 00408AD4 |. E8 37FFFFFF CALL ASABILLI.00408A10 <---16进制转10进制 00408AD9 |. 25 FF000000 AND EAX,0FF 00408ADE |. 83C4 0C ADD ESP,0C 00408AE1 |. 3BF8 CMP EDI,EAX <---第7位与第2位+第5位*2+26-24比较 00408AE3 |. 75 4A JNZ SHORT ASABILLI.00408B2F <---关键比较点,跳则失败 00408AE5 |. 8A46 06 MOV AL,BYTE PTR DS:[ESI+6] <---取第注册码7位 00408AE8 |. 50 PUSH EAX 00408AE9 |. E8 22FFFFFF CALL ASABILLI.00408A10 <---16进制转10进制 00408AEE |. 8A0E MOV CL,BYTE PTR DS:[ESI] <---取第注册码1位 00408AF0 |. 8AD8 MOV BL,AL 00408AF2 |. 51 PUSH ECX 00408AF3 |. 81E3 FF000000 AND EBX,0FF 00408AF9 |. E8 12FFFFFF CALL ASABILLI.00408A10 <---16进制转10进制 00408AFE |. 25 FF000000 AND EAX,0FF 00408B03 |. B9 24000000 MOV ECX,24 00408B08 |. 8D4458 26 LEA EAX,DWORD PTR DS:[EAX+EBX*2+26] <---eax=eax(第1位)+ebx(第7位)*2+26 00408B0C |. 99 CDQ 00408B0D |. F7F9 IDIV ECX <---edx=eax-24 00408B0F |. 8BFA MOV EDI,EDX 00408B11 |. 8A56 03 MOV DL,BYTE PTR DS:[ESI+3] <---取第注册码4位 00408B14 |. 52 PUSH EDX 00408B15 |. E8 F6FEFFFF CALL ASABILLI.00408A10 <---16进制转10进制 00408B1A |. 25 FF000000 AND EAX,0FF 00408B1F |. 83C4 0C ADD ESP,0C 00408B22 |. 3BF8 CMP EDI,EAX <---第4位与第1位+第7位*2+26-24比较 00408B24 |. 75 09 JNZ SHORT ASABILLI.00408B2F <---关键比较点,跳则失败 00408B26 |. 5F POP EDI 00408B27 |. 5E POP ESI 00408B28 |. B8 01000000 MOV EAX,1 <---注册标志位eax=1,注册成功 00408B2D |. 5B POP EBX 00408B2E |. C3 RETN <---call结束,返回00408C32 00408B2F |> 5F POP EDI <---失败则跳转到这里 00408B30 |. 5E POP ESI 00408B31 |. 33C0 XOR EAX,EAX <---注册标志位eax=0,注册失败 00408B33 |. 5B POP EBX 00408B34 \. C3 RETN <---call结束,返回00408C32 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 总结: 注册成功条件: ① 注册码为7位 ② 注册码第3位+第6位*2+26-24=第1位 ③ 注册码第2位+第5位*2+26-24=第7位 ④ 注册码第1位+第7位*2+26-24=第4位 一组可用的注册码: Name:POW Serial:2008002 注册信息放在HKEY_CURRENT_USER\Software\NAGI-P SOFT\ASABILLI下面的Name、ID键值中。 POW整理,转载请保持信息完整。 欢迎交流:[email protected] 2003-5-15