好友
阅读权限40
听众
最后登录1970-1-1
|
【文章标题】: 某网络加速器调试技巧
【文章作者】: Luck[LCG]
【作者邮箱】: 466748210@qq.com
【作者QQ号】: 466748210
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
之前发过文章,不过实在无聊得很。加上答应作者不放破解补丁,作为技术交流,写个文章总结下加密升级以后快速调试技巧。
之所以要快速调试技巧,意思是不能每次都拿个按钮事件去查按钮事件啊之类的,实在蛋疼。所以我们直接通过分析程序某些特征
定位程序关键点,达到快速调试技巧。
1.对于加密数据的分析
全是英文,翻译太难,我们选个比较简单的分析一下就可以得到大概意思。
"ehhn"、"eggz"在解密过程中会得到"ok"、"no"
所以我们猜测文本对应长度在加密后会*2,也就是原来长度为1的现在变成了2
根据这个我们可以快速翻译加密字符串
这样你就能大概翻译出加密字符串了。(感谢他们采用的加密技术)
2.定位按钮入口事件
实在蛋疼得不行,每次用按钮事件查找让我崩溃了!
那么怎么快速定位呢?
我分析了程序以后发现,原代码并未删除,3.7只是加密了字符串,并未发现实质性动作。但这么多的垃圾信息并未剔除。
所以程序字符串分为3段:
1.未加密文本,无用
2.加密文本段1,无用
3.加密文本段2,有用
定位3太简单了,往下拉,过了2就是了。
根据特点,下面的eggz再往下的几个加密串,进入后把代码往上拉,就可以看到push 0x?了,也就是我们的入口点了。直接下断即可。
说半天是空话,我们来试试:
打开OD,加载程序后查字符串(注意,3.8有加密壳,不过很垃圾,可以用脱壳机啊之类的处理掉,也可以自己动手脱。)
往下拉。
我们已经知道字符串的3部分构成,所以直接下拉找特征码
hreoczeiejhscdbphuerdkar
找到这个就OK了。
Follow in cpu
OD的版本不一样,所以翻译出来也会有很大的不同
004124E0 6A FF push -1
004124E2 68 0FDB4D00 push 004DDB0F ; ASCII ""B8,"?,B4,"P"
004124E7 64:A1 00000000 mov eax, dword ptr fs:[0]
004124ED 50 push eax
004124EE 64:8925 0000000>mov dword ptr fs:[0], esp
004124F5 81EC A0010000 sub esp, 1A0
004124FB 53 push ebx
顺便提取个特征码,以后直接暴力搜索
6A FF 68 0F DB 4D 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 81 EC A0 01 00 00 53
3.调试技巧
我的调试技巧很简单,跳转即下断点,多测试。
由于代码很龌龊,所以我们需要快速定位。举个例子:
如何确定Vip线路限制
我们知道Vip线路一定是个跳转,然后一定会有字符串解密。(因为VIP限制提示被加密了)
所以如果没有加密字符串的跳转我们可以直接无视!
00413D07 /74 49 je short 00413D52
00413D09 |6A 01 push 1
00413D0B |51 push ecx
00413D0C |8BCC mov ecx, esp
00413D0E |896424 28 mov dword ptr [esp+28], esp
00413D12 |68 30064F00 push 004F0630 ; bgieflgigyjigmcrcmeajfavjsiqfwbueeecajdmhidtfzaphzjmfnhfbtgwaninbrejhzfiamhxbieuiydhjghtgjffazfcdiapbmhldmighrglgejtdmfeepjrbjfudhatiwjfflgrcmanaphhfpiqgofiafcmcudzbkjnbsilabjqjnjrebjcgnhihwhlhtcihlaufjgbhfjtbicveoahbvjthmaxfmco
00413D17 |FF15 28824E00 call dword ptr [4E8228] ; MFC71.#304
00413D1D |8D4424 1C lea eax, dword ptr [esp+1C]
00413D21 |50 push eax
00413D22 |8BCD mov ecx, ebp
00413D24 |E8 6707FFFF call 00404490
00413D29 |8D4C24 14 lea ecx, dword ptr [esp+14]
00413D2D |C68424 B8010000>mov byte ptr [esp+1B8], 4
00413D35 |FF15 CC864E00 call dword ptr [4E86CC] ; MFC71.#3397
00413D3B |50 push eax
00413D3C |8BCD mov ecx, ebp
00413D3E |E8 9D01FFFF call 00403EE0
00413D43 |8D4C24 14 lea ecx, dword ptr [esp+14]
00413D47 |FF15 D8864E00 call dword ptr [4E86D8] ; MFC71.#578
00413D4D |E9 AD040000 jmp 004141FF
00413D52 \8D8C24 E8000000 lea ecx, dword ptr [esp+E8]
很明显,这里进入了一个解密段。
00413D12 68 30064F00 push 004F0630 ; bgieflgigyjigmcrcmeajfavjsiqfwbueeecajdmhidtfzaphzjmfnhfbtgwaninbrejhzfiamhxbieuiydhjghtgjffazfcdiapbmhldmighrglgejtdmfeepjrbjfudhatiwjfflgrcmanaphhfpiqgofiafcmcudzbkjnbsilabjqjnjrebjcgnhihwhlhtcihlaufjgbhfjtbicveoahbvjthmaxfmco
bgieflgigyjigmcrcmeajfavjsiqfwbueeecajdmhidtfzaphzjmfnhfbtgwaninbrejhzfiamhxbieuiydhjghtgjffazfcdiapbmhldmighrglgejtdmfeepjrbjfudhatiwjfflgrcmanaphhfpiqgofiafcmcudzbkjnbsilabjqjnjrebjcgnhihwhlhtcihlaufjgbhfjtbicveoahbvjthmaxfmco
很长,我们来计算下长度
228
按照刚才的算法,对应的字符串长度应该为114
取消断点,F9.
正在初始化...
网际速递友好提示
免费用户不能选择VIP 专用服务
器组!欢迎您充值成为我们的付
费VIP用户,享受尊贵的VIP服务
在删除换行和空格之后:
正在初始化...网际速递友好提示免费用户不能选择VIP专用服务器组!欢迎您充值成为我们的付费VIP用户,享受尊贵的VIP服务
长度居然就是114!
我们可以确定下来这里肯定是VIP限制段了。
je不成立则提示VIP限制,那么跳过就不会限制了。
Jmp掉,果然成功,证明了我们的猜想。
这些只是一些小的调试技巧,需要个人总结。我的观点是:
一个软件,不管是加壳还是啥的,如果要跟就应该从最开始的版本,因为框架是定了的,再变都是那个样子
如果一个软件能够每次更新框架就大不一样,那说明你的对手是一个反破解高手,或者说他以娱乐破解为乐趣!
那将是十分恐怖的一件事情。
--------------------------------------------------------------------------------
【经验总结】
1.善于总结
2.有想找捷径的欲望
--------------------------------------------------------------------------------
【版权声明】: 本文原创于Luck[LCG], 转载请注明作者并保持文章的完整, 谢谢!
2010年08月06日 21:33:36 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|