超级拖拉机 超级拖拉机是一个四副牌的拖拉机游戏,在全国范围都有广泛使用。 游戏有多种设定以适应不同地方的规则。游戏支持单人玩,也支网络 多人一起玩。最新版4.02 下
载地址: http://yywk.nease.net/ 软件限制:在单人游戏中,未注册版本的悔牌次数受限制。在多人游戏中, 未注册版本只能玩一段时间。 【破解工具】:Ollydbg1.09 中文版 【过 程】: 呵呵,我们开工吧!唉!^-^^-^ 我的水平很低,许多地方表达的有问题,烦请各位指教! 用ollydbg加载运行 ,发现是个重起效验型的软件.输入注册码后,软件用用户名和试验码 计算(加密注册信息)得到新的字符串后放到注册表: [HKEY_LOCAL_MACHINE/SOFTWARE/yywk/超级拖拉机]-reg下
输入试验码:123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJK (一共要46位) 说明:试验码没有46位,程序在用用户名计算的值移动试验码时,就会计算出一些别的字符在 比较的字符串中,引起无法正确跟踪. 开始: 第一部分---注册表中注册信息的处理过程 用0llydbg加载后下 RegQueryvalueExA中断: | 00423A4E PUSH 超级拖拉.0046D470 ; ASCII reg 00423A53 PUSH EAX 00423A54 MOV BYTE PTR SS:[EBP+2E8], 0 00423A5B MOV DWORD PTR SS:[ESP+28], ESI 00423A5F CALL EBX ; //读注册信息 00423A61 MOV EAX, DWORD PTR SS:[ESP+10] 00423A65 CMP EAX, ESI 00423A67 JNB SHORT 超级拖拉.00423A75 00423A69 MOV ECX, DWORD PTR SS:[EBP+530] ; ECX<==SS:[470D98]=01260490. ASCII q02 $%7'yck $%&'jhz{m}N/r1z3456uyij@RcGO
00423A6F MOV BYTE PTR DS:[EAX+ECX], 0 00423A73 JMP SHORT 超级拖拉.00423A7F | 00423ADD MOV EAX, DWORD PTR SS:[EBP+530] ; EAX<==01260490. 00423AE3 PUSH EAX 00423AE4 CALL 超级拖拉.004051B0 00423AE9 MOV EDI, EAX ; EDI=EAX (长度) 00423AEB XOR ECX, ECX 00423AED ADD ESP, 4 00423AF0 CMP EDI, ECX 00423AF2 MOV DWORD PTR SS:[ESP+1C], ECX 00423AF6 MOV BYTE PTR SS:[ESP+20], 1 00423AFB MOV BYTE PTR SS:[ESP+21], 2 00423B00 MOV BYTE PTR SS:[ESP+22], 40 00423B05 MOV BYTE PTR SS:[ESP+23], 20 00423B0A MOV BYTE PTR SS:[ESP+24], 8 00423B0F MOV BYTE PTR SS:[ESP+25], 10 ; //计算开始 00423B14 JLE SHORT 超级拖拉.00423B55 ; SS:[12F498]<== 01 02 40 20 08 10 1A 02 赋值 00423B16 /MOV EAX, ECX 00423B18 |XOR EDX, EDX 00423B1A |DIV DWORD PTR SS:[ESP+18] 00423B1E |MOV ESI, 6 ; ESI=6 00423B23 |MOV DL, BYTE PTR SS:[ESP+EDX+28] ; DL<==4A ('J') 00423B27 |MOV BYTE PTR SS:[ESP+1C], DL 00423B2B |MOV EAX, DWORD PTR SS:[ESP+1C] ; EAX<==4A ('J') 00423B2F |CDQ 00423B30 |IDIV ESI ; EAX= 4A IDIV ESI=6 ==>EAX= 0C EDX=2 00423B32 |MOV EAX, DWORD PTR SS:[EBP+530] ; EAX<==01260490. 00423B38 |LEA ESI, DWORD PTR DS:[ECX+EAX] ; EAX<==01260490. ECX=0 00423B3B |MOV AL, BYTE PTR DS:[ECX+EAX] ; AL<== 77 ('w') 00423B3E |MOV DL, BYTE PTR SS:[ESP+EDX+20] ; DL<==40 ('@') 00423B42 |TEST AL, DL 00423B44 |JNZ SHORT 超级拖拉.00423B4A 00423B46 |OR AL, DL 00423B48 |JMP SHORT 超级拖拉.00423B4E 00423B4A |NOT DL 00423B4C |AND AL, DL 00423B4E |INC ECX 00423B4F |MOV BYTE PTR DS:[ESI], AL 00423B51 |CMP ECX, EDI 00423B53 /JL SHORT 超级拖拉.00423B16 ; //这里把注册表中加密的注册信息还原成原来的试验码 ; DS:[ESI]=01260490,(ASCII123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJK) 00423B74 MOV EAX, DWORD PTR SS:[EBP+530] ; EAX<==01260490,(ASCII123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJK) |