好友
阅读权限10
听众
最后登录1970-1-1
|
【文章标题】: 破解皇族软件-QQ四国军棋刷分v1.9.9.9.5最新版
【文章作者】: alic0ol
【作者QQ号】: 1050475658
【软件名称】: 皇族软件-QQ四国军棋刷分v1.9.9.9.5
【软件大小】: 170 KB
【下载地址】: 自己搜索下载
【加壳方式】: ASPack 2.12 -> Alexey Solodovnikov
【保护方式】: 脱壳+自校验
【编写语言】: VC8 -> Microsoft Corporation *
【使用工具】: PEid,OD,LordPE,ImportREC
【操作平台】: XP sp3
--------------------------------------------------------------------------------
【详细过程】
一.查壳
PEid查壳为 ASPack 2.12 -> Alexey Solodovnikov
二.脱壳
ESP 定律脱壳,找到OEP:0042A4D9
0042A4D9 E8 A6890000 call 皇族软件.00432E84
三.转存,修复输入表
LordPE 完整转存,ImportREC修复,没有无效的指针,运行,哈哈,成功脱壳
四.破解
点“点击注册”,随便输入注册码“123456”,提示“注册码不正确”,点提示框的 确定时,弹出一个破网站,我们就先把这个破网站给搞掉吧
OD 加载,懂得VC的都知道,一般加载程序的函数也就是 CreateProcess,CreateThread,WinExecute,ShellExecute,OpenProcess等,我们ctrl+n,
找到 ShellExecuteA 函数,下断,运行到上次操作,堆栈窗口出现:
0012AE88 000E0352 |hWnd = 000E0352 ('皇族外挂-天空软件注册-www.sky...',class='#32770',parent=000E0614)
0012AE8C 00000000 |Operation = NULL
0012AE90 009952C0 |FileName = "http://shareware.skycn.com/orderform.php?purtype=unreg&soft_id=5760"
0012AE94 00000000 |Parameters = NULL
0012AE98 00000000 |DefDir = NULL
0012AE9C 00000001 \IsShown = 1
就是这个啦,我们把
0040B19E |. FF15 84034400 call dword ptr ds:[<&shell32.ShellExecut>; \ShellExecuteA
NOP掉就可以啦,复制保存,当我们再次运行该程序的时候,关机重启,说明程序有自校验,在VC中,关机函数一般就是
BOOL ExitWindowsEx(
UINT uFlags,
DWORD dwReserved
);
好了,那我们就在OD中ctrl+n,找到函数下断点吧,提示有7个断点
1.
00401B80 /$ 83EC 14 sub esp,14
00401B83 |. 8D0424 lea eax,dword ptr ss:[esp]
00401B86 |. 50 push eax ; /phToken
00401B87 |. 6A 28 push 28 ; |DesiredAccess = TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES
00401B89 |. FF15 28034400 call dword ptr ds:[<&kernel32.GetCurrent>; |[GetCurrentProcess
00401B8F |. 50 push eax ; |hProcess
00401B90 |. FF15 28004400 call dword ptr ds:[<&advapi32.OpenProces>; \OpenProcessToken
00401B96 |. 8D4C24 08 lea ecx,dword ptr ss:[esp+8]
00401B9A |. 51 push ecx ; /pLocalId
00401B9B |. 68 C80D4400 push dump_.00440DC8 ; |SeShutdownPrivilege
00401BA0 |. 6A 00 push 0 ; |SystemName = NULL
00401BA2 |. FF15 2C004400 call dword ptr ds:[<&advapi32.LookupPriv>; \LookupPrivilegeValueA
00401BA8 |. 8B0424 mov eax,dword ptr ss:[esp]
00401BAB |. 6A 00 push 0 ; /pRetLen = NULL
00401BAD |. 6A 00 push 0 ; |pPrevState = NULL
00401BAF |. 6A 00 push 0 ; |PrevStateSize = 0
00401BB1 |. 8D5424 10 lea edx,dword ptr ss:[esp+10] ; |
00401BB5 |. 52 push edx ; |pNewState
00401BB6 |. 6A 00 push 0 ; |DisableAllPrivileges = FALSE
00401BB8 |. 50 push eax ; |hToken
00401BB9 |. C74424 1C 010>mov dword ptr ss:[esp+1C],1 ; |
00401BC1 |. C74424 28 020>mov dword ptr ss:[esp+28],2 ; |
00401BC9 |. FF15 14004400 call dword ptr ds:[<&advapi32.AdjustToke>; \AdjustTokenPrivileges
00401BCF |. 6A 00 push 0 ; /Reserved = 0
00401BD1 |. 6A 01 push 1 ; |Options = EWX_SHUTDOWN
00401BD3 |. FF15 44054400 call dword ptr ds:[<&user32.ExitWindowsE>; \ExitWindowsEx
00401BD9 |. 83C4 14 add esp,14
00401BDC \. C3 retn
这个就是简单的“提权”函数,说白了,就是通过AdjustTokenPrivileges让程序具有一定的权限,例如重启,打开,查询,提权,就这几个函数啦
这个不用改,我们看看下面一个
00403405 > /68 4C040000 push 44C ; /Timeout = 1100. ms
0040340A . |FF15 1C034400 call dword ptr ds:[<&kernel32.Sleep>] ; \Sleep
00403410 . |FF15 D4024400 call dword ptr ds:[<&kernel32.IsDebugger>; [IsDebuggerPresent
00403416 . |85C0 test eax,eax
00403418 . |74 0A je short dump_.00403424
0040341A . |6A 00 push 0 ; /Reserved = 0
0040341C . |6A 02 push 2 ; |Options = EWX_REBOOT
0040341E . |FF15 44054400 call dword ptr ds:[<&user32.ExitWindowsE>; \ExitWindowsEx
通过 IsDebuggerPresent 来检验是否存在调试器,就是检测我们OD的,如果存在就重启,比较恨的,呵呵,这里有个关键跳,我们把je改为jmp,就跳
过ExitWindowsEx 了,接下来的几个断点对照上面修改,我们保存一份,可以正常运行啦
OD加载,查找字符串,“点击注册”,发现是个大跳转跳过来的
00407D13 /0F84 7E000000 je crack_2.00407D97
如果跳转实现,就要注册,那么我们试着把它NOP掉,保存一份看看,运行,呵呵,这个软件显示已注册了,唉,无语了.... |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|