首页
社区
课程
招聘
[原创]斗地主 6.4.0.581,这是很久以前的东西,放出来作者不会生气吧,呵呵!
发表于: 2006-2-24 16:25 7899

[原创]斗地主 6.4.0.581,这是很久以前的东西,放出来作者不会生气吧,呵呵!

2006-2-24 16:25
7899
斗地主 6.4.0.581 by [email]zzhzihui@163.net[/email]

工具:WKTVBDEBUGGER,VBDE.85(iorior)
***********************************************************
方法:
1.)非法复制问题
00475D15: 1C BranchF 00475D55 (Jump ?
;这里!!改1C...为1E E1 00 00 39 04 38 FF F5 EC 00 00 00 05 07 00
2.)30次及7局限制!!!!!!这个是关键.
0044CFEB: 1C BranchF 0044D0DB ?        ;注册后应该就jmp
机器码:1CAB01768400F51E000000E0767800F5        (offset 4cfeb)
3.)主窗口 未注册 字样(参考5.2)
offset 54A8Fh(rva:454a8f):        1CBF00 0470FFF5C90000000
改成:                                1E3A00...
4.)启动画面 未注册 字样(参考5.2)
44fd04:1C2B01 0478FF210F2C0319
改成:  1E...
5.)关于窗口 未注册 字样
0045F4A9: 1C BranchF 0045F53A (Jump ? ;这里不跳OK
机器码:1CC203 1B0C00210F30031970FF0870FF
改:    1E3403
***********************************************************
总结:WKTVBDebugger确实不凡,但有待改进,可成为VB-PCODE杀手.
也许作者修改了文件头,或者被压缩后,没有准确脱壳.导致EXDEC,VBParser报告说不是VB程序,VBExplorer在反编译过程时出错,SMARTCHECK运行时出错.
WKT中的地址其实也是OFFSET+imagebase得到的.
VBDE.85中的过程地址实际是过程结束地址,在WKT中下断是没有效果的,把那个地址-1,-2,-3,-4,-5下断,就有可能在过程的最后一行返回代码断下.这也是找断点的一个技巧.一个程序如果没有太多暗桩,其实也是减少的被查到关键的次数,像这个6.4版本没有了检测文件大小的功能(这个在5.2中用来检测是否被脱壳),但是少了一个可用断点.让我多花了好几天时间啊.
***********************************************************
详细过程:
我以前曾经动过5.2.0.489版本,太让人恼火了,关闭我的机器N次!
早就有了防备之心,但是,嘿嘿,作者回心转意,这回没有暗桩了.

本来不想动它,但有网友的REG文件导入也不能注册,本来安在C盘可以,但我安在D盘了,就不可以注册了.
;REG文件
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\DDZ\Infomation]
"LicenseNumber"="0"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion]
"programeID"="0"
所以试试,容易的我就不敢相信,也没有兴趣了.

UPX脱壳.WKTVBDebugger载入,一直按F8单步执行,直到消息窗口出现如下消息:
Stack dump is enabled and relative to ESP<-EBP.
FStStr -> ''
FStStrNoPop -> ''
FStStr -> 'DDZ060040040530'
FStStr -> 'DDZ060040040530'  ;注意要有两行,仔细再跟几步,

然后可以在代码窗口看到如下代码:
00475CFF: 31 FStStr
00475D02: 32 FFreeStr
00475D09: 00 LargeBos
00475D0B: 6C ILdRf 001786ACh
00475D0E: 4A FnLenStr
00475D0F: F5 LitI4: -> Fh 15
00475D14: CC NeI4
00475D15: 1C BranchF 00475D55 (Jump ?
;这里!!改1C...为1E E1 00 00 39 04 38 FF F5 EC 00 00 00 05 07 00
00475D18: 00 LargeBos
00475D1A: 04 FLdRfVar 0012FCA4h
00475D1D: F5 LitI4: -> ECh 236
00475D22: 05 ImpAdLdRf
00475D25: 24 NewIfNullPr 0041BCCC
00475D28: 0D VCallHresult CVBApp::Licenses
00475D2D: 27 LitVar_Missing 0012FC34h
00475D30: 27 LitVar_Missing 0012FC54h
00475D33: 27 LitVar_Missing 0012FC74h
00475D36: F5 LitI4: -> 0h 0
00475D3B: 3E FLdZeroAd
======
16:24 2005-2-17
不是这么简单,上面好像只是解决非法复制问题,照样未注册.
程序会访问%system%\comocx32.drv这个文件,它和注册也相关,存放机器码.
查看以前 斗地主5.2.0.489 过程.
用WKTVBDebugger载入ddz.exe,在FormManager中
找到frmAbout 的img()下断,就是那个注册按钮.这样会弹出注册框,而注册框就是IKnow,在注册框IKnow的cmdCancel命令按钮下断,因为当玩到超过7局时也会弹出注册框,而且按取消会退出程序,它是用END语句结束程序的,也就是如下PCODE代码:
这样我们在PCODE Lead1/End上下断,玩到第8局时弹出程序,在如下代码断下:
0043C51B: 76 ImpAdLdI4
0043C51E: 0A ImpAdCallFPR4 kernel32!FreeLibrary
0043C523: 3C SetLastSystemError
0043C524: 76 ImpAdLdI4
0043C527: 0A ImpAdCallFPR4 kernel32!FreeLibrary
0043C52C: 3C SetLastSystemError
0043C52D: FC Lead1/End        ;这里断下,执行退出程序.
0043C52F: 13 ExitProcHresult
0043C530: 34 CStr2Ansi
0043C531: 40 Ary1LdRf
这时按AnalizeBranch分析跳转,发现它附近的跳转有:
43C46FH:BranchF 43c477h
43c47ah:BranchF 43c48dh
43c484h:BranchF 43c4c9h
43c4e1h:BranchF 43c4e9h
很不幸,这样没有用!
---
0043C52D: FC Lead1/End        ;这里断下,执行退出程序.
IKnow.cmdCancel 004339F4h 00433A0Ch
43c4b4 branchF 433a55
43c4e1 branchF 433a75
43c4c1 ...>end
43c4b4 ...>end
43c4a1 ...>end
43c468 ...>end 43c46e
4339f4 断下 59下F12
454a62
454a8f
454a8f 1d branchT ....  改1e3a00
这样也没有结果!!
==
437c30
437c66
==
476d30 spalsh
4465bd num16761024 ;这个不跳表示是第一次使用,显示帮助
45b938
455ddf mainform
4531d7 menuenable
473be9 将要已经载入
46ca4c mainload
======
44deb8 :注册窗载入
=====
476561 取comocx.drv中的机器码
Stack DS:[0012F6D8]=0014C9E4, (ASCII "6078352425")
毫无进展!找断点好困难!!!
===========================================================
用vbde试试.
vbde反的proc地址是结束地址,注意在WKTVBDEBUG中要减1或减3才是EXITPROC地址.
                end        wktstart        size
homepage        438c30        438BAC                84
newsoft                438dc8        438D44                84
onlinereg        438f60        438EDC                84

看来他们的大小都是64h了,但是有其他的不是,这个不一定,不能用来推起始地址.
新游戏是发牌代码是个关键,因为在超过次数后如果发牌才会弹出注册框,它应该是个PICBOX.
gamemain中的picbox有:
'offset: 0002BBAC
   Begin VB.PictureBox GamePic
'offset: 0002BBF2
   Begin VB.PictureBox Img1
      Index           =   1
   End
'offset: 0002BC39
   Begin VB.PictureBox Img1
      Index           =   0
   End
'offset: 0002BC80
   Begin VB.PictureBox Hand
   End

'offset: 0002C0CA
   Begin VB.PictureBox TmpPic
      Index           =   0
   End
'offset: 0002C101
   Begin VB.PictureBox TmpPic
      Index           =   1
   End
VBDE中关于过程地址找找这几个PICBOX的地址.
试验几个HAND都不行.
GAMEPIC有好几个,分别把结束地址-1,-2,-3,-4,-5设断,因为WKTVBDEBUG只有在地址完全匹配才中断,例如后面找到的44CFEB处会断下,但44CFEC就不会断下.
4402c8 gamepic 启动断下
465c98 gamepic 发牌断下,哈哈就要这个vbde 得到465c9c的gamepic
43d0d9 发牌继续断下,用这个返回调用程序跟.哈哈跟到...
-----
44cf33 有个跳转!!jump
44cfeb 前面调用了取CODE的代码.!!regcode chk?yeah!!!yes!
根据跟踪,点击发牌这时好像调用的是一个FORM_CLICK过程.
代码如下:
0044CFDE: C5                 OrI4
0044CFDF: 3206005CFF58FF54FF FFreeStr
0044CFE8: 1A64FF         FFree1Ad
0044CFEB: 1EAB01         BranchF 0044D0DB ?        ;注册后应该就jmp
0044CFEE: 768400         ImpAdLdI4
0044CFF1: F51E000000         LitI4: -> 1Eh 30        ;30次了吗
0044CFF6: E0                 GeI4
0044CFF7: 767800         ImpAdLdI4
0044CFFA: F507000000         LitI4: -> 7h 7        ;7局了吗
0044CFFF: E0                 GeI4 7h,0h ?
0044D000: 751E00         ImpAdLdI2
0044D003: F400                 LitI2_Byte: -> 0h 0
0044D005: C6                 EqI2
0044D006: C4                 AndI4
0044D007: C5                 OrI4
0044D008: 1CAB01         BranchF 0044D0DB ?        ;超过限制就不跳
0044D00B: 751E00         ImpAdLdI2
0044D00E: 756B00         ImpAdLdI2

---
0044CFEB: 1C BranchF 0044D0DB ?        ;注册后应该就jmp
机器码:1CAB01768400F51E000000E0767800F5        (offset 4cfeb)
0044D008: 1C BranchF 0044D0DB ?        ;超过限制就不跳
机器码:1CAB01751E00756B00C51CEA00100407
把其中任意一个前面1C改1E强制跳转(改前面较好),限制解除!!其实和5.2.0.489版本很相像..
====================
主窗口,未注册字样.懒得跟了.参考5.20版本搜索以下特征字符,成功.
offset 54A8Fh(rva:454a8f):        1CBF00 0470FFF5C90000000
改成:                                1E3A00...
代码如下:
00454A78: 0F VCallAd
00454A7B: 19 FStAdFunc
00454A7E: 08 FLdPr
00454A81: 0D VCallHresult
00454A86: 6B FLdI2
00454A89: F4 LitI2_Byte: -> 0h 0
00454A8B: C6 EqI2
00454A8C: 1A FFree1Ad
00454A8F: 1D BranchT 00454B17 ?        ;不跳ok,改:Branch 454a92跳到下行一样.
00454A92: 04 FLdRfVar 0012FB04h
00454A95: F5 LitI4: -> C9h 201
00454A9A: 05 ImpAdLdRf
00454A9D: 24 NewIfNullPr 0041BCCC
00454AA0: 0D VCallHresult CVBApp::Licenses
00454AA5: 6C ILdRf 00000000h
00454AA8: 04 FLdRfVar 0012FB0Ch
00454AAB: 05 ImpAdLdRf
00454AAE: 24 NewIfNullPr 0041BCCC
00454AB1: 0D VCallHresult CVBApp::get_App
=======
关于窗,未注册
0045F48F: 24 NewIfNullPr GameMain 00414034
0045F492: 0F VCallAd GameMain.MyCode
0045F495: 19 FStAdFunc
0045F498: 08 FLdPr
0045F49B: 0D VCallHresult get__ipropVISIBLEMENU
0045F4A0: 6B FLdI2
0045F4A3: F4 LitI2_Byte: -> 0h 0
0045F4A5: C6 EqI2
0045F4A6: 1A FFree1Ad
0045F4A9: 1C BranchF 0045F53A (Jump ? ;这里不跳OK
0045F4AC: 1B LitStr: '**********'
0045F4AF: 21 FLdPrThis 00178440h
0045F4B0: 0F VCallAd frmAbout.L7
0045F4B3: 19 FStAdFunc
0045F4B6: 08 FLdPr
0045F4B9: 0D VCallHresult put__ipropCAPTIONLABEL
0045F4BE: 1A FFree1Ad
0045F4C1: 1B LitStr: 'regname'
0045F4C4: 43 FStStrCopy
--
0045F4A9: 1C BranchF 0045F53A (Jump ? ;这里不跳OK
机器码:1CC203 1B0C00210F30031970FF0870FF
改:    1E3403

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 207
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
斗地主5.2.0.489 by zzhzihui@163.net  2003/11/19

软件自己说明:这是一个共享软件,有30次及每次7局的限制,注册费用为30元。

本来无所谓,试验一下,可是发现这个程序很可恶,如果修改后,直接关机,可恶,建议大家K之!
当然我也K,回首K的过程,惨痛啊,还好后来在Visual PC 5.1虚拟计算机里才免得被它超度N次.
工具:GUW32,WKTVBDebugger,UltraEdit,OllyDbg(它没中多大用)
--------------------------------------------------
完美爆破方法:
1.)非法复制问题
非法复制问题,可导入以下注册表:
~~~~~~~~~
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\DDZ\Infomation]
@="斗地主软件信息"
"SetupDir"="C:\\DDZ"
"ProductId"="DDZ050020020480"
"ProductName"="斗地主扑克游戏"
"Writer"="周军"
"Version"="5.2 Build 489"
"LicenseNumber"="35"
"CPUCode"="4899542745"
"RegCode"=" "
"RegName"="zzhzihui" ;随便改成你的注册名字
~~~~~~~~
479cef处:1CFD00 004F0440FFF5EC000000052A00改为1EFD00...
这里关键跳转,但是如果注册表没有信息,强制跳走,运行会出错.如果恢复原始Gameer.dmd文件即可.(注意好像当前目录也不能有其他目录的*.ddz存盘文件)
注:以下强制跳走只要把1C????改为1E????即可
2.)如果程序被脱壳(程序大小变大)关机,关机代码
搜索特征代码000000fcc8 ,然后向前找如果紧挨着有1c????????,那么改1c为1e,就是强制跳走,共9处
3.)用30次,打7局限制
44f00A处:1C6B02 766400FB FEFDC728FF 改为1E6B02....
4.)反跟踪(计算时间差)
特征码1C???? 0004FCC800改1E????...
5.)启动画面"(未注册)"字样
450E18处:1C2B01 0478FF210F2C0319改为1E2B01...
6.)启动后主窗体会显示(未注册)
改:1CBF00 0470FFF5C90000000506
   1E3A00 ...(跳到45A83A,就是下一句了,等于没跳)
7.)关于框里"未注册"字样
4640D5:
1CC203 1B0C00210F2C031970FF0870FF
1E3403...(跳到下一句,等于没跳)

*8.)程序BUGS
菜单,本机机器码,出现类型不匹配错误13
43ECB4:
0478FF F57D0800000506002407000D48
130000....(返回调用程序)
===================================================
---------------------------------------------------
详细追踪,请看以下过程:
---------------------------------------------------
WIN98下GUW32自动脱壳成功

WKTVBDebugger发现它是VB6 PCODE程序,载入:

479c79
479cef:1CFD00 004F0440FFF5EC000000052A00
这里关键跳转,但是如果注册表没有信息,强制跳走,运行会出错.如果恢复原始Gameer.dmd文件即可.
注:以下强制跳走只要把1C????改为1E????即可

479d31:msgbox非法复制
479e64

脱壳后会不定时检测,如果发现程序被改动,然后关闭WINDOWS,黑!
MagicSet5.01也检测,如果改动就退出,仁慈!

OLLYDBG发现它调用了ExitWindowsEx 函数关机,还加了force,黑!

==
尝试搜索op code
Standard Set
5Eh ImpAdCallI4 5字节 (因为我发现是它调用API函数)

444C3F
45C59B
54C858

Lead3 Prefix
21h ImpAdCallI4 5
22h ImpAdCallI4 5
27h ImpAdCallI4 5
28h ImpAdCallI4 5

失败,找不到从哪里来的.
========
转入虚拟机跟踪
47a2a1
47a2b7
47a44e
47a57a
进入449fb9 出到:

47a8b8 regcode
47a979
...载入启动画面
47aa90

47ae18
47aec5再按f10就关机了,按f8
47af36
47afa7
47b09b
47b20d
47b27d** timecheck
47b31a
47b335
47b385
47b4c0
47b77c
47b8ef
47bad4
47bb91
47bc7b cvbapp::load
47be75
47c050
47c133 f8
47c2aa
47c31d F8
47C42F 可跳过下面CALL
47C434 CALL关机
        进入46d027
        46d182关机

---
ollydbg载入,下User32!ExitWindowsEx断点
关机代码
user32.dll
77E2FA9D    FF15 2411DF77   CALL DWORD PTR DS:[<&KERNEL32.GetLastErr>; KERNEL32.GetLastError
77E2FAA3  ^ EB EC           JMP SHORT USER32.77E2FA91
77E2FAA5 >  6A 00           PUSH 0  ;这里开始
77E2FAA7    FF7424 0C       PUSH DWORD PTR SS:[ESP+C]
77E2FAAB    FF7424 0C       PUSH DWORD PTR SS:[ESP+C]
77E2FAAF    E8 DBFEFFFF     CALL USER32.77E2F98F
77E2FAB4    C2 0800         RETN 8
来自:
msvbvm60.dll
661062B0   /0F85 51570000   JNZ MSVBVM60.6610BA07
661062B6   |FFD0            CALL EAX ;这个Call调用
661062B8   |3BFC            CMP EDI,ESP
661062BA   |0F85 2F570000   JNZ MSVBVM60.6610B9EF
661062C0   |33C0            XOR EAX,EAX

当 eax=41bc38
ddz.exe
0041BC38    A1 94324900     MOV EAX,DWORD PTR DS:[493294]
0041BC3D    0BC0            OR EAX,EAX
0041BC3F    74 02           JE SHORT ddz.0041BC43
0041BC41    FFE0            JMP EAX
0041BC43    68 20BC4100     PUSH ddz.0041BC20
0041BC48    B8 10114000     MOV EAX,<JMP.&MSVBVM60.DllFunctionCall>
0041BC4D    FFD0            CALL EAX
0041BC4F    FFE0            JMP EAX ;这里指向关机
0041BC51    0000            ADD BYTE PTR DS:[EAX],AL
0041BC53    0012            ADD BYTE PTR DS:[EDX],DL
0041BC55    0000            ADD BYTE PTR DS:[EAX],AL
0041BC57    0047 65         ADD BYTE PTR DS:[EDI+65],AL
0041BC5A    74 43           JE SHORT ddz.0041BC9F
0041BC5C    75 72           JNZ SHORT ddz.0041BCD0
0041BC5E    72 65           JB SHORT ddz.0041BCC5
不行,还是没摸对地方!!!!
------------
^_^,哈哈!!
WKTVBDebugger ,载入,API下断rtcfilelen
找对地方了:filelen(取文件大小),MagicSet5.01也这样检测,怎么早不这样试,累我半天..唉!
防止被它搞死,进入虚拟机

0.)启动时/载入进度时
004707D3: 5E ImpAdCallI4 rtcFileLen on address 66043FFAh
004707D8: 71 FStR4
004707DB: 6C ILdRf 000EAC00h
004707DE: F5 LitI4: -> 493E0h 300000
004707E3: DB GtI4
004707E4: 6C ILdRf 001714F4h
004707E7: 1B LitStr: '??????怀缗仙?????怀缗??????怀缗??????怀缗'
004707EA: 3D NeStr
004707EC: C5 OrI4
004707ED: 1C BranchF 004707F7 (No Jump)
004707F0: 0A ImpAdCallFPR4 skin!0043699Ch
004707F5: FC Lead1/End
004707F7: 76 ImpAdLdI4
004707FA: F5 LitI4: -> 0h 0
004707FF: DB GtI4
00470800: 75 ImpAdLdI2
00470803: F4 LitI2_Byte: -> 0h 0
00470805: C6 EqI2
00470806: C4 AndI4

4707ed:
代码:1c5701 0a3d010000 fcc8 765d00 f5

1.)开始游戏/三人,四人游戏
0045B26A: 2A ConcatStr
0045B26B: 31 FStStr
0045B26E: 2F FFree1Str
0045B271: 04 FLdRfVar 0012F9C4h
0045B274: 66 NextI4: jump to 0045B243
0045B279: 6C ILdRf 00000001h
0045B27C: E4 CI2I4
0045B27D: FD Lead2/Close
0045B27F: 6C ILdRf 001547D4h
0045B282: 5E ImpAdCallI4 rtcFileLen on address 66043FFAh
0045B287: 71 FStR4
0045B28A: 6C ILdRf 00000004h
0045B28D: F5 LitI4: -> 493E0h 300000
0045B292: DB GtI4
0045B293: 6C ILdRf 0015CD9Ch
0045B296: 1B LitStr: 'ProgrameID'
0045B299: 3D NeStr
0045B29B: C5 OrI4
0045B29C: 1C BranchF 0045B2A6 ? 不跳,完蛋

ddz.exe
改后大小:961,536 000eac00h
原始大小:267,776 00041600h

45b29c:
代码:1c8202 0a3d010000fcc8

2.)选择玩家确定后
00456F59: 2A ConcatStr
00456F5A: 31 FStStr
00456F5D: 2F FFree1Str
00456F60: 04 FLdRfVar 0012D1C0h
00456F63: 66 NextI4: jump to 00456F32
00456F68: 6C ILdRf 00000001h
00456F6B: E4 CI2I4
00456F6C: FD Lead2/Close
00456F6E: 6C ILdRf 001581C4h
00456F71: 5E ImpAdCallI4 rtcFileLen on address 66043FFAh
00456F76: 71 FStR4
00456F79: 6C ILdRf 00000004h
00456F7C: F5 LitI4: -> 493E0h 300000
00456F81: DB GtI4
00456F82: 6C ILdRf 00183E7Ch
00456F85: 1B LitStr: 'ZIP'
00456F88: 3D NeStr
00456F8A: C5 OrI4
00456F8B: 1C BranchF 00456F95 ? 这里
00456F8E: 0A ImpAdCallFPR4 skin!0043B664h
00456F93: FC Lead1/End
00456F95: 0A ImpAdCallFPR4 poke!00446E2Ch

456f8b:
代码:1cf502 0a63000000fcc80a6400

3.)选择背景时
00447301: 5E ImpAdCallI4 rtcFileLen on address 66043FFAh
00447306: 71 FStR4
00447309: 6C ILdRf 000EAC00h
0044730C: F5 LitI4: -> 493E0h 300000
00447311: DB GtI4
00447312: 6C ILdRf 001AF49Ch
00447315: 1B LitStr: 'ZIP'
00447318: 3D NeStr
0044731A: C5 OrI4
0044731B: 1C BranchF 00447325 (No Jump)
0044731E: 0A ImpAdCallFPR4 skin!0043B424h
00447323: FC Lead1/End
00447325: 05 ImpAdLdRf
00447328: 56 NewIfNullAd
0044732B: FC Lead1/FStAd
0044732F: F4 LitI2_Byte: -> FFh 255
00447331: 08 FLdPr
00447334: 0D VCallHresult
00447339: 27 LitVar_Missing 0012F25Ch

44731b:
代码:1c51010a2d000000fcc805

447301-447311(尝试搜索特征码,失败!)
5E2B000400 7178FF 6C78FF F5E0930400 DB

4.)关于关闭时
0044945D: 2A ConcatStr
0044945E: 31 FStStr
00449461: 2F FFree1Str
00449464: 04 FLdRfVar 0012F684h
00449467: 66 NextI4: jump to 00449436
0044946C: 6C ILdRf 00000001h
0044946F: E4 CI2I4
00449470: FD Lead2/Close
00449472: 6C ILdRf 001534F4h
00449475: 5E ImpAdCallI4 rtcFileLen on address 66043FFAh
0044947A: 71 FStR4
0044947D: 6C ILdRf 00000004h
00449480: F5 LitI4: -> 493E0h 300000
00449485: DB GtI4
00449486: 6C ILdRf 001A53ECh
00449489: 1B LitStr: 'ZIP'
0044948C: 3D NeStr
0044948E: C5 OrI4
0044948F: 1C BranchF 00449499 ?

44948f:
代码:1c51010a2b000000fcc8

5.)选项确定时
00447115: 2A ConcatStr
00447116: 31 FStStr
00447119: 2F FFree1Str
0044711C: 04 FLdRfVar 0012F1F4h
0044711F: 66 NextI4: jump to 004470EE
00447124: 6C ILdRf 00000001h
00447127: E4 CI2I4
00447128: FD Lead2/Close
0044712A: 6C ILdRf 001B078Ch
0044712D: 5E ImpAdCallI4 rtcFileLen on address 66043FFAh
00447132: 71 FStR4
00447135: 6C ILdRf 00000004h
00447138: F5 LitI4: -> 493E0h 300000
0044713D: DB GtI4
0044713E: 6C ILdRf 001678B4h
00447141: 1B LitStr: 'ZIP'
00447144: 3D NeStr
00447146: C5 OrI4
00447147: 1C BranchF 00447151 ?

447147:
1c51010a3c000000fc

6.)关于框 按"注册"时
调用关于关闭,然后到
004462CE: 71 FStR4
004462D1: 6C ILdRf 000EAC00h
004462D4: F5 LitI4: -> 493E0h 300000
004462D9: DB GtI4
004462DA: 6C ILdRf 00149DB4h
004462DD: 1B LitStr: '8.10'
004462E0: 3D NeStr
004462E2: C5 OrI4
004462E3: 1C BranchF 004462ED (No Jump)
004462E6: 0A ImpAdCallFPR4 skin!0043B4E4h
004462EB: FC Lead1/End
004462ED: 6C ILdRf 0017C310h
004462F0: 3D CastAd
004462F3: 19 FStAdFunc
004462F6: 04 FLdRfVar 0012F03Ch
004462F9: 0A ImpAdCallFPR4 skin!0043CF30h
004462FE: 1A FFree1Ad
00446301: 13 ExitProcHresult
00446302: 00 LargeBos

4462e3:
1c51010a17000000fcc8

总结:搜索特征代码000000fcc8 ,然后向前找如果紧挨着有1c????????,那么改1c为1e,就是强制跳走,共9处

7.)当玩到7局时
004462B1: 2A ConcatStr
004462B2: 31 FStStr
004462B5: 2F FFree1Str
004462B8: 04 FLdRfVar 0012EF24h
004462BB: 66 NextI4: jump to 0044628A
004462C0: 6C ILdRf 00000001h
004462C3: E4 CI2I4
004462C4: FD Lead2/Close
004462C6: 6C ILdRf 00194ABCh
004462C9: 5E ImpAdCallI4 rtcFileLen on address 66043FFAh
004462CE: 71 FStR4
004462D1: 6C ILdRf 00000005h
004462D4: F5 LitI4: -> 493E0h 300000
004462D9: DB GtI4
004462DA: 6C ILdRf 00193CCCh
004462DD: 1B LitStr: '8.10'
004462E0: 3D NeStr
004462E2: C5 OrI4
004462E3: 1E Branch 004462ED ?  ;这里(搜索特征码,已改成强制跳转1E)

第11局时也走过
446224h:BranchF 446264h
4462e3h:Branch 4461EDh

446301

---------
非法复制问题,可导入以下注册表:
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\DDZ\Infomation]
@="斗地主软件信息"
"SetupDir"="C:\\DDZ"
"ProductId"="DDZ050020020480"
"ProductName"="斗地主扑克游戏"
"Writer"="周军"
"Version"="5.2 Build 489"
"LicenseNumber"="35"
"CPUCode"="4899542745"
"RegCode"=" "
"RegName"="zzh"

-------
但是载入后仍然会退出,filemon查出以下文件没找到
vb6chs.dll asycfit.dll ~clbcatq.dll clbcatq.dll
mswinsck.ocx(嫌疑最大,MS的文件),嘿嘿,就是它了,复制到程序目录OK
-------
2006-2-24 16:28
0
雪    币: 207
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
开始搞它的7局,11局限制
--------
点击关于注册时(将会弹出注册框,因为过了7次限制时也会弹出这个注册框)
00438318: 6C ILdRf 0015ABE0h
0043831B: FD Lead2/FStAdNoPop
0043831F: 05 ImpAdLdRf
00438322: 24 NewIfNullPr 0041AC94
00438325: 0D VCallHresult CVBApp::Unload ;卸载关于框
0043832A: 1A FFree1Ad
0043832D: 7F ILdI2
00438330: F4 LitI2_Byte: -> 4h 4
00438332: C6 EqI2
00438333: 1C BranchF 0043834B ?  ;这里可跳过注册框
00438336: 27 LitVar_Missing 0012F9E8h
00438339: 25 PopAdLdVar
0043833A: 28 LitVarI2 1h , 1
0043833F: 25 PopAdLdVar
00438340: 05 ImpAdLdRf
00438343: 24 NewIfNullPr IKnow 004084F8 ;注册框入栈
00438346: 0D VCallHresult meth__imethSHOW ;显示注册框
0043834B: 13 ExitProcHresult
0043834C: E4 CI2I4
可是弹出时,却不会经过这里

但按 取消时会到这里
0044F0E1: FC Lead1/End
0044F0E3: 13 ExitProcHresult
0044F0E4: 84 IStI2
0044F0E7: 00 LargeBos

前面跳转(点Analize BranchX可查看):
(设断试验,点开始游戏的牌,中断)
44EEB9: 44EED1(BranchF)        J
44EF17: 44EF2C                N
44EF88: 44EEDC                N
44EFF4: 44EEE3                N
44F00A: 44EEE3                J(然后运行游戏) 让他跳走OK
44F041: 44EE78
44F075: 44EEA9(Branch)
44F0AC: 44EEB4

代码如下:
0044EFDA: FD Lead2/Close
0044EFDC: 04 FLdRfVar 0012F81Eh
0044EFDF: 21 FLdPrThis 00152380h
0044EFE0: 0F VCallAd ddz.MyCode
0044EFE3: 19 FStAdFunc
0044EFE6: 08 FLdPr
0044EFE9: 0D VCallHresult get__ipropVISIBLEMENU
0044EFEE: 6B FLdI2
0044EFF1: 1A FFree1Ad
0044EFF4: 1C BranchF 0044F0E3 (No Jump) ;这里跳走OK
0044EFF7: 76 ImpAdLdI4
0044EFFA: F5 LitI4: -> 1Eh 30  ;30次限制
0044EFFF: E0 GeI4
0044F000: 76 ImpAdLdI4
0044F003: F5 LitI4: -> 7h 7 ;是否大于7局
0044F008: E0 GeI4
0044F009: C5 OrI4
0044F00A: 1C BranchF 0044F0E3 (No Jump) ;这里一定要跳走
0044F00D: 76 ImpAdLdI4
0044F010: FE CStrI4
0044F012: FD Lead2/PopTmpLdAdStr
0044F016: 1B LitStr: 'LicenseNumber'
0044F019: 43 FStStrCopy
0044F01C: 04 FLdRfVar 0012F84Ch
0044F01F: 1B LitStr: 'SoftWare\DDZ\Infomation'
0044F022: 43 FStStrCopy
0044F025: 04 FLdRfVar 0012F850h

44f00A:
代码:1C6B02 766400FB FEFDC728FF

-----------------------------------------------
参考:
--------
标 题:VB anti-loader 2种常用方法介绍 (3千字)
发信人:小楼
时 间:2002-7-13 11:35:34
详细信息:

VB anti-loader 2种常用方法介绍
  2. 时间记数
    通过计算某段代码运行时间来知道有否被load(类似SC、WKT等loader载入目标程序时需要较多时间)
   
        以下代码见于 斗地主 4.6 Build 438

      46B729: 0a ImpAdCallFPR4:  rtcgettimer        // (1)
      ....
      ....
      46BEF0: 0a ImpAdCallFPR4:  rtcgettimer        // (2)
      46BEF5: 6e FLdFPR4               
      46BEF8: af SubR4                              // (2)- (1)
      46BEF9: ea CR4R4                  
      46BEFA: f4 LitI2_Byte:            0x14  20            
      46BEFC: eb CR8I2                  
      46BEFD: dc GtR4                                // >20秒
      46BEFE: 1c BranchF:                46BF05          |
      46BF01: 00 LargeBos                                |
      46BF03: Lead1/c8 End                      结束  <--  YES
      46BF05: 00 LargeBos                        继续  <--  NO
      ....
      ....
      46C34F: 0a ImpAdCallFPR4:  rtegettimer        // (3)
      46C354: 6e FLdFPR4               
      46C357: af SubR4                              // (3)-(1)
      46C358: ea CR4R4                  
      46C359: f4 LitI2_Byte:            0x14  20
      46C35B: eb CR8I2                  
      46C35C: dc GtR4                                // >20秒              
      46C35D: 1c BranchF:                46C364          |
      46C360: 00 LargeBos                                |              
      46C362: Lead1/c8 End                      结束  <--  YES      
      46C364: 00 LargeBos                        继续  <--  NO
------------------------
下rtcGetTimer断点
1.)
0047A510: 0A ImpAdCallFPR4 rtcGetTimer on address 6600CDDAh
0047A515: 6E FLdFPR4
0047A518: AF SubR4
0047A519: EA CR4R4
0047A51A: F4 LitI2_Byte: -> 14h 20
0047A51C: EB CR8I2
0047A51D: DC GtR4
0047A51E: 1C BranchF 0047A525 (Jump ?
0047A521: 00 LargeBos
0047A523: FC Lead1/End
0047A525: 00 LargeBos
0047A527: F5 LitI4: -> 0h 0

47A51E:1CDD08 0004FCC800 58F5000000009408

2.)
0047A96D: 00 LargeBos
0047A96F: 0A ImpAdCallFPR4 rtcGetTimer on address 6600CDDAh
0047A974: 6E FLdFPR4
0047A977: AF SubR4
0047A978: EA CR4R4
0047A979: F4 LitI2_Byte: -> 14h 20
0047A97B: EB CR8I2
0047A97C: DC GtR4
0047A97D: 1C BranchF 0047A984 (No Jump)
0047A980: 00 LargeBos
0047A982: FC Lead1/End
0047A984: 00 LargeBos

47A97D:1C3C0D 0004FCC800 0C055F00566000FC

特征码1C???? 0004FCC800
58C56h也有一处,但跟踪时没有中断过

--------
启动画面"(未注册)"字样
00450E12: 75 ImpAdLdI2
00450E15: F4 LitI2_Byte: -> 0h 0
00450E17: C6 EqI2
00450E18: 1C BranchF 00450E7B ? ;跳走OK
00450E1B: 04 FLdRfVar 0012F8ECh
00450E1E: 21 FLdPrThis 00138C30h
00450E1F: 0F VCallAd frmSplash.lblVersion
00450E22: 19 FStAdFunc
00450E25: 08 FLdPr
00450E28: 0D VCallHresult get__ipropCAPTIONLABEL 0119312C
0d54000700 2f78ff
00450E2D: 6C ILdRf 00000000h
00450E30: 1B LitStr: '('
00450E33: 2A ConcatStr
00450E34: 23 FStStrNoPop
00450E37: 04 FLdRfVar 0012F8E0h
00450E3A: F5 LitI4: -> 844h 2116
00450E3F: 05 ImpAdLdRf
00450E42: 24 NewIfNullPr 0041AC94
00450E45: 0D VCallHresult CVBApp::Licenses

450E18:1C2B01 0478FF210F2C0319
但启动后主窗口仍然有"未注册"
---------
446ec1 读取数据文件
470e39*
45c8ee lic
43be9a
457e05
45d2b0 ****已经卸载启动窗体
45d2f8

4528a5
470f90
461992
4619a7

=======
48995427457083856434
--------
445554 创建菜单
------
新游戏时
0045A81F: 21 FLdPrThis 00153C08h
0045A820: 0F VCallAd ddz.MyCode
0045A823: 19 FStAdFunc
0045A826: 08 FLdPr
0045A829: 0D VCallHresult get__ipropVISIBLEMENU ;好像检测某个菜单是否可见
0045A82E: 6B FLdI2
0045A831: F4 LitI2_Byte: -> 0h 0
0045A833: C6 EqI2
0045A834: 1A FFree1Ad
0045A837: 1C BranchF 0045A8BF (Jump ? ;这里跳走会出现"未注册"字样
0045A83A: 04 FLdRfVar 0012F768h
0045A83D: F5 LitI4: -> C9h 201
0045A842: 05 ImpAdLdRf
0045A845: 24 NewIfNullPr 0041AC94
0045A848: 0D VCallHresult CVBApp::Licenses
0045A84D: 6C ILdRf 00000000h
0045A850: 04 FLdRfVar 0012F770h
0045A853: 05 ImpAdLdRf
0045A856: 24 NewIfNullPr 0041AC94

...
如下:
0045A8BF: 1B LitStr: '??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@??@?????'
0045A8C2: 04 FLdRfVar 0012F768h
0045A8C5: F5 LitI4: -> 844h 2116
0045A8CA: 05 ImpAdLdRf
0045A8CD: 24 NewIfNullPr 0041AC94
0045A8D0: 0D VCallHresult CVBApp::Licenses
0045A8D5: 6C ILdRf 001682DCh
0045A8D8: 2A ConcatStr  ;这里开始,未注册了
0045A8D9: 23 FStStrNoPop
0045A8DC: 1B LitStr: '?' ;右括号(也许被加密过)
0045A8DF: 2A ConcatStr
0045A8E0: 23 FStStrNoPop
0045A8E3: 04 FLdRfVar 0012F760h
0045A8E6: F5 LitI4: -> C9h 201
0045A8EB: 05 ImpAdLdRf
0045A8EE: 24 NewIfNullPr 0041AC94
0045A8F1: 0D VCallHresult CVBApp::Licenses
0045A8F6: 6C ILdRf 00000000h
0045A8F9: 2A ConcatStr

在45a837下断,重新运行,OK中奖了,启动时也经过这里,不要让它跳,ok,不显示"未注册"了
改:1CBF00 0470FFF5C90000000506
   1E3A00 ...(跳到45A83A,就是下一句了,等于没跳)
=============
关于注册框
463f53
窗口已经出现但是还没有初始化,控件值只是设计时的值,如注册码是2
类似的代码:
004640BB: 24 NewIfNullPr ddz 00413C84
004640BE: 0F VCallAd ddz.MyCode
004640C1: 19 FStAdFunc
004640C4: 08 FLdPr
004640C7: 0D VCallHresult get__ipropVISIBLEMENU
004640CC: 6B FLdI2
004640CF: F4 LitI2_Byte: -> 0h 0
004640D1: C6 EqI2
004640D2: 1A FFree1Ad
004640D5: 1C BranchF 00464166 (Jump ? ;这里跳走就"未注册"
004640D8: 1B LitStr: '**********'
004640DB: 21 FLdPrThis 0017FA28h
004640DC: 0F VCallAd frmAbout.L7
004640DF: 19 FStAdFunc
004640E2: 08 FLdPr
004640E5: 0D VCallHresult put__ipropCAPTIONLABEL
004640EA: 1A FFree1Ad
004640ED: 1B LitStr: 'regname'
004640F0: 43 FStStrCopy

4640D5:
1CC203 1B0C00210F2C031970FF0870FF
1E3403...(跳到下一句,等于没跳)
搞定!关于框已经没有"未注册"了
-------------------------------------------------------------------
<完>2003/11/19

--------------------程序BUGS------------
菜单,本机机器码,出现类型不匹配错误13

0043ED11: 0D VCallHresult
0043ED16: 08 FLdPr
0043ED19: 0D VCallHresult
0043ED1E: F5 LitI4: -> 10h 16
0043ED23: 59 PopTmpLdAdStr
0043ED26: F5 LitI4: -> 40h 64
0043ED2B: FE CStrI4(长整型转为字符型)
0043ED2D: FD Lead2/PopTmpLdAdStr
0043ED31: 6C ILdRf 0016119Ch
0043ED34: 50 CI4Str ;错误(字符转换为长整型数) 153864H机器码被搞成乱码,如果改为正常,会溢出(10位)
0043ED35: 59 PopTmpLdAdStr
0043ED38: 3E FLdZeroAd
0043ED3B: FD Lead2/PopTmpLdAdStr
0043ED3F: 04 FLdRfVar 0012F6A8h
0043ED42: 0A ImpAdCallFPR4 poke!004413BCh
0043ED47: 32 FFreeStr
0043ED5C: 1A FFree1Ad
0043ED5F: 35 FFree1Var
0043ED62: 13 ExitProcHresult

是这个调用
66105012    E8 8786F5FF     CALL MSVBVM60.__vbaI4Str
66105017    50              PUSH EAX
66105018    33C0            XOR EAX,EAX
6610501A    8A06            MOV AL,BYTE PTR DS:[ESI]
6610501C    46              INC ESI
6610501D    FF2485 54691066 JMP DWORD PTR DS:[EAX*4+66106954]


6605D69E >  55              PUSH EBP
6605D69F    8BEC            MOV EBP,ESP
6605D6A1    51              PUSH ECX
6605D6A2    8D45 FC         LEA EAX,DWORD PTR SS:[EBP-4]
6605D6A5    50              PUSH EAX
6605D6A6    6A 00           PUSH 0
6605D6A8    E8 B2E5FAFF     CALL MSVBVM60.6600BC5F
6605D6AD    50              PUSH EAX
6605D6AE    FF75 08         PUSH DWORD PTR SS:[EBP+8]
6605D6B1    FF15 B41A0066   CALL DWORD PTR DS:[<&OLEAUT32.#64>]      ; OLEAUT32.VarI4FromStr
6605D6B7    85C0            TEST EAX,EAX ;跳走完蛋
6605D6B9    0F8C 90130300   JL MSVBVM60.6608EA4F
6605D6BF    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
6605D6C2    C9              LEAVE
6605D6C3    C2 0400         RETN 4
----

779BE410 >  83EC 24         SUB ESP,24
779BE413    8B5424 30       MOV EDX,DWORD PTR SS:[ESP+30]
779BE417    53              PUSH EBX
779BE418    56              PUSH ESI
779BE419    8D4424 08       LEA EAX,DWORD PTR SS:[ESP+8]
779BE41D    57              PUSH EDI
779BE41E    8D4C24 18       LEA ECX,DWORD PTR SS:[ESP+18]
779BE422    50              PUSH EAX
779BE423    8B4424 3C       MOV EAX,DWORD PTR SS:[ESP+3C]
779BE427    51              PUSH ECX
779BE428    8B4C24 3C       MOV ECX,DWORD PTR SS:[ESP+3C] ;unicode字符
779BE42C    52              PUSH EDX
779BE42D    50              PUSH EAX
779BE42E    51              PUSH ECX ;unicode字符 地址15e3ac
779BE42F    C74424 2C 0B000>MOV DWORD PTR SS:[ESP+2C],0B
779BE437    C74424 30 FF1F0>MOV DWORD PTR SS:[ESP+30],1FFF
779BE43F    E8 5C390000     CALL OLEAUT32.VarParseNumFromStr
779BE444    85C0            TEST EAX,EAX ;eax=0
779BE446    74 06           JE SHORT OLEAUT32.779BE44E ;跳
779BE448    0F8C 04010000   JL OLEAUT32.779BE552
779BE44E    8B4C24 28       MOV ECX,DWORD PTR SS:[ESP+28]
779BE452    33C0            XOR EAX,EAX
779BE454    85C9            TEST ECX,ECX
-------

不好改!
在WKTVBPcodeDEBUGER中找 窗体管理器,选窗体 DDZ,选菜单MYCODE然后下断点.代码:
0043ECB4: 04 FLdRfVar 0012F6D8h ;中断在这里
0043ECB7: F5 LitI4: -> 87Dh 2173
0043ECBC: 05 ImpAdLdRf
0043ECBF: 24 NewIfNullPr 0041AC94
0043ECC2: 0D VCallHresult CVBApp::Licenses
0043ECC7: 0B ImpAdCallI2 poke!0043E684h
0043ECCC: 31 FStStr

43ECB4:0478FF F57D0800000506002407000D48
干脆把43ECB4处的478FF改为13 0000 就是退出此子程序.这样就不会异常退出了.
但这个菜单究竟是干吗的.反正与玩游戏无关了.不管它吧!

2003/11/29

==========
启动显示"无法找到时软件安装路径,请重装本软件!"
MD,因为你删掉了unins000.exe文件,还检查这个卸载程序.TNND
伪造一个0字节的文件就可以骗过它了.
2006-2-24 16:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wgc
4
象这种烂软件一定要K
2006-2-24 19:08
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
5
谁说卜生气了,PK you!
2006-2-24 21:38
0
雪    币: 251
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哈哈偶前段时间破了一个变态的vb程序也是1c改1d的啦。
2006-2-24 22:16
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
MARCH 我在Visual PC 5.1 TW2000 1.22这一个版可以用,OllyICE 用老出问题不知为什么?
2006-2-25 10:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
应该不会生气滴!!
2006-2-25 10:37
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
真??,呃?咣?AI?在不敢恭居,而且有作弊嫌疑.?件每次?是出比我大一?的牌,活活?死你.他的出牌策略也有?铨.另外,最?心的就是你不?意?地主他也非要你?,我就不明白他呃是哪??家的斗地主?!!我估?作者?有玩咿QQ彦面的,??,咣?在?中心的斗地主,天天自己在家檩樵造?!!呃?的?件我迂的收偻太?促了,自己本?呗基本功能都?法完善,怎?能好意思收人家都遑呢?我支持你破解他都最新版!
2006-2-27 08:35
0
雪    币: 2054
活跃值: (282)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
10
最初由 lcsuper 发布
真??,呃?咣?AI?在不敢恭居,而且有作弊嫌疑.?件每次?是出比我大一?的牌,活活?死你.他的出牌策略也有?铨.另外,最?心的就是你不?意?地主他也非要你?,我就不明白他呃是哪??家的斗地主?!!我估?作者?有玩咿QQ彦面的,??,咣?在?中心的斗地主,天天自己在家檩樵造?!!呃?的?件我迂的收偻太?促了,自己本?呗基本功能都?法完善,怎?能好意思收人家都遑呢?我支持你破解他都最新版!

呵呵,这种程序是要K的
2006-3-1 19:28
0
雪    币: 207
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
最初由 W-94 发布
MARCH 我在Visual PC 5.1 TW2000 1.22这一个版可以用,OllyICE 用老出问题不知为什么?


这个我没遇到过,最近也很少摸OD,更不敢碰虚拟机,因为我的机器实在太烂了,慢,用了虚拟机就像386.不过我建议你用原版的OD试试看.
2006-3-17 15:47
0
雪    币: 207
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
最初由 wenglingok 发布
谁说卜生气了,PK you!
2006-3-17 15:48
0
游客
登录 | 注册 方可回帖
返回
//