下载页面: http://www.skycn.com/soft/14632.html
软件大小: 366 KB
软件语言: 简体中文
软件类别: 国产软件 / 共享版 / 棋牌游戏
应用平台: Win9x/NT/2000/XP
加入时间: 2003-12-02 15:14:40
下载次数: 1677
推荐等级: ***
【软件简介】:本软件是高速制作棋隐开局库的最强工具之一,有助于象棋爱好者创建适合自己的棋隐开局库。[功能:]1.支持棋隐中国格式、ICCS格式以及棋隐内部格式;2.自动根据棋局的胜、负、和结果学习,无须手工分类;3.自动学习对称棋谱,抵抗对方反手策略;4.可保存开局库制作进度,随时中断,或恢复开局库的制作进程;5.支持用户指定未知棋局的学习方式;6.可以学习到指定的任意回合数;7.速度高,非对称学习每小时可达3000局以上;8.完全后台执行,让你在工作和游戏同时制作棋隐开局库;9.良好的用户界面,用户可以任意查看、添加、删除文件到正在学习列表。
【保护方式】:EXEStealth+ASPack 加壳、功能限制
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、Ollydbg1.09、PEiD、LordPE、ImportREC
—————————————————————————————————
【过 程】:
一、脱壳
老规矩:用IsDebug 1.4插件去掉Ollydbg的调试器标志。忽略所有的异常选项。
PEiD报是 EXEStealth 壳,所以直接下断:BP CloseHandle
00528060 EB 00 jmp short XqlBuild.00528062//进入OD后停在这!
00528062 EB 2F jmp short XqlBuild.00528093
77E57963 64:A1 18000000 mov eax,dword ptr fs:[18]//断在这,取消断点。 Ctrl+F9执行到返回
77E57969 8B48 30 mov ecx,dword ptr ds:[eax+30]
77E5796C 8B4424 04 mov eax,dword ptr ss:[esp+4]
77E57970 83F8 F4 cmp eax,-0C
77E57973 0F84 4CB4FFFF je kernel32.77E52DC5
77E57979 83F8 F5 cmp eax,-0B
77E5797C 0F84 38B4FFFF je kernel32.77E52DBA
77E57982 83F8 F6 cmp eax,-0A
77E57985 0F84 0F500200 je kernel32.77E7C99A
77E5798B 8BC8 mov ecx,eax
77E5798D 81E1 03000010 and ecx,10000003
77E57993 83F9 03 cmp ecx,3
77E57996 50 push eax
77E57997 0F84 26870000 je kernel32.77E600C3
77E5799D FF15 3C10E477 call dword ptr ds:[<&ntdll.NtClose>]; ntdll.ZwClose
77E579A3 85C0 test eax,eax
77E579A5 0F8C 02B4FFFF jl kernel32.77E52DAD
77E579AB 33C0 xor eax,eax
77E579AD 40 inc eax
77E579AE C2 0400 retn 4 //返回到 005283B0
005283B0 58 pop eax
005283B1 8B85 B62F4000 mov eax,dword ptr ss:[ebp+402FB6]
005283B7 BB 01000000 mov ebx,1
005283BC E8 08000000 call XqlBuild.005283C9
005283C1 8D85 F52B4000 lea eax,dword ptr ss:[ebp+402BF5]
005283C7 50 push eax
005283C8 C3 retn //返回到 0052849F
0052849F 8B9D B62F4000 mov ebx,dword ptr ss:[ebp+402FB6] ; XqlBuild.00400000
005284A5 039D BA2F4000 add ebx,dword ptr ss:[ebp+402FBA]
//EBX=00400000 + 00125001=00525001
005284AB C1CB 07 ror ebx,7//这段代码可以看做是EXEStealth壳的典型代码
005284AE 895C24 10 mov dword ptr ss:[esp+10],ebx
005284B2 8D9D EB2E4000 lea ebx,dword ptr ss:[ebp+402EEB]
005284B8 895C24 1C mov dword ptr ss:[esp+1C],ebx
005284BC 8BBD B62F4000 mov edi,dword ptr ss:[ebp+402FB6]
005284C2 037F 3C add edi,dword ptr ds:[edi+3C]
005284C5 8B9F C0000000 mov ebx,dword ptr ds:[edi+C0]
005284CB 83FB 00 cmp ebx,0
005284CE 74 0F je short XqlBuild.005284DF
OK,在00525001内存处下 内存访问断点,F9运行,断在第2层壳的入口处!
00525001 60 pushad
00525002 E8 03000000 call 0052500A
0052500A 5D pop ebp
0052500B 45 inc ebp
0052500C 55 push ebp
0052500D C3 retn
可以看出里面还有1层壳,是:ASPack 所以直接下断:BP GetProcAddress
77E5A5FD 55 push ebp//中断3次,取消断点。 Ctrl+F9执行到返回
77E5A5FE 8BEC mov ebp,esp
77E5A600 51 push ecx
77E5A601 51 push ecx
77E5A602 53 push ebx
77E5A603 57 push edi
77E5A604 8B7D 0C mov edi,dword ptr ss:[ebp+C]
77E5A607 BB FFFF0000 mov ebx,0FFFF
77E5A60C 3BFB cmp edi,ebx
77E5A60E 0F86 6B83FFFF jbe kernel32.77E5297F
77E5A65A C2 0800 retn 8 //返回到 00525302
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
在GetProcAddress处中断3次时的堆栈:
0012FF94 00525302 /CALL 到 GetProcAddress 来自 005252FC
0012FF98 77E40000 |hModule = 77E40000 (kernel32)
0012FF9C 004DF910 ProcNameOrOrdinal = "DeleteCriticalSection"
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
005252FC FF95 490F0000 call dword ptr ss:[ebp+F49]//GetProcAddress
00525302 85C0 test eax,eax //返回到这里
下面不远处就是ASPack的典型入口代码:
005253AF 61 popad //直接F4到这里
005253B0 75 08 jnz short 005253BA
005253B2 B8 01000000 mov eax,1
005253B7 C2 0C00 retn 0C
005253BA 68 D0924D00 push 4D92D0
005253BF C3 retn //飞向光明之巅! 返回OEP=004D92D0
———————————————————————
004D92D0 55 push ebp//在这儿用LordPE纠正ImageSize后完全DUMP这个进程
004D92D1 8BEC mov ebp,esp
004D92D3 83C4 F0 add esp,-10
004D92D6 B8 08904D00 mov eax,4D9008
004D92DB E8 00D0F2FF call 004062E0
004D92E0 A1 70C54D00 mov eax,dword ptr ds:[4DC570]
004D92E5 8B00 mov eax,dword ptr ds:[eax]
004D92E7 E8 F841FAFF call 0047D4E4
运行ImportREC,选择这个进程。把OEP改为000D92D0,点IT AutoSearch,点“Get Import”。FixDump,正常运行!
—————————————————————————————————
二、破解
机器码:101135322
试炼码:13572468
N久没玩破解了,脱壳后顺手看看这个东东的破解。Sorry,希望作者加强保护吧。
————————————————————————
程序是重启验证的注册方式,反汇编很容易看见关键字符
004D7C74 E8 530BF3FF call dumped_.004087CC
004D7C79 8B55 FC mov edx,dword ptr ss:[ebp-4]//EDX=101135322 机器码
004D7C7C 8B83 A0030000 mov eax,dword ptr ds:[ebx+3A0]
004D7C82 E8 3D5EF8FF call dumped_.0045DAC4
004D7C87 E8 C8FEFFFF call dumped_.004D7B54//关键CALL!
004D7C8C 84C0 test al,al
004D7C8E 74 5B je short dumped_.004D7CEB//跳则OVER!
————————————————————————
进入关键CALL:004D7C87 call 004D7B54
004D7B54 55 push ebp
004D7B55 8BEC mov ebp,esp
004D7B57 51 push ecx
004D7B58 53 push ebx
004D7B59 E8 6EFEFFFF call dumped_.004D79CC//读取、还原 保存在注册表中的变形试炼码
004D7B5E 8BD8 mov ebx,eax//EAX=00CF1974=13572468 试炼码
004D7B60 E8 8FFBFFFF call dumped_.004D76F4//算法CALL
004D7B65 8945 FC mov dword ptr ss:[ebp-4],eax
004D7B68 8D45 FC lea eax,dword ptr ss:[ebp-4]
004D7B6B E8 84FCFFFF call dumped_.004D77F4//得出注册码 EBX=03B3F04B=62124107
004D7B70 3BC3 cmp eax,ebx//真假码比较
004D7B72 75 04 jnz short dumped_.004D7B78
004D7B74 B0 01 mov al,1 //置1则OK
004D7B76 EB 02 jmp short dumped_.004D7B7A
004D7B78 33C0 xor eax,eax//完美爆破点 ★
004D7B7A 5B pop ebx
004D7B7B 59 pop ecx
004D7B7C 5D pop ebp
004D7B7D C3 retn
程序取C盘分区序列号进行运算,结合查表运算,懒得看这些循环多次的算法了。
————————————————————————
【完 美 爆 破】:
4D7B78 33C0 xor eax,eax
改为:4D7B78 B001 mov al,1
———————————————————————
【注册信息保存】:
[HKEY_CURRENT_USER.DEFAULTSoftwareuilder]
"Data"=">11=4288"
———————————————————————
【整 理】:
机器码:101135322
注册码:62124107
—————————————————————————————————
, _/
/| _.-~/ _ , 青春都一饷
( /~ / ~-._ |
`\ _/ ~ ) 忍把浮名
_-~~~-.) )__/;;,. _ //'
/'_, --~ ~~~- ,;;___( (.-~~~-. 换了破解轻狂
`~ _( ,_..-- ( ,;'' / ~-- /._`
/~~//' /' `~ ) /--.._, )_ `~
" `~" " `" /~'` `\~~
" " "~' ""
Cracked By 巢水工作坊——fly [OCN][FCG][NUKE][DCM]
2004-01-25 18:30