zz 超级拖拉机 4.02 破解算法分析

超级拖拉机 4.02 破解算法分析

超级拖拉机

超级拖拉机是一个四副牌的拖拉机游戏,在全国范围都有广泛使用。
游戏有多种设定以适应不同地方的规则。游戏支持单人玩,也支网络
多人一起玩。最新版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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值