打造杀不死的 OllyDbg
打造杀不死的 OllyDbgOllyDbg是地球人都知道的32位汇编级调试器,破解的必备工具。相信各位对它都不会陌生,软件的功能就不再介绍了。由于它名声太响,所以很多软件都反Ollydbg调试,到现在更是很多猛壳也纷纷开始反Ollydbg的调试了,比如Acprotect、EPE(在看雪上老王说过一句话:至今为止这个壳还没有被脱掉的记录)等。面对这样的软件和壳,我们的Ollydbg一运行就被Kill掉了,怎么办?难道就这样被吓到?看看文章的标题——打造杀不死的 OllyDbg,你知道我要做什么了吧?!
虽然FLY大侠已经做了一个反Acprotect的Olldbg,但我用它总是很难调试Acprotect程序,一载入就异常,然后退出。有一天看到Jeffzhang的怀旧Ollydbg发布,调试Acprotect不错,但是还是被Kill了……怒!于是反Killod诞生:基于1.10汉化版制作,Ollydbg汉化版绝对不能加壳,不然程序无法运行,Antikillod实际上是用Call Ollydbg载入插件工作。
这里我们拿Antikillod壳开刀,需要准备工具Ollydbg1.1汉化版、UltraEdit10.20中文版、CmdBar.dl插件。
第一步:修改Ollydbg
1.改掉Ollydbg窗口的Caption和Classname
思路是在软件启动时改变创建窗口函数的参数。首先下断在“CreateWindowExA”,F9之后停下,根据CreateWindowExA回到函数调用的入口地址,继续向上走,在00435E37下断。再重新加载程序,F9运行,程序中断在00435E37。看下面的代码,很快就找到OD窗口的Caption(00435E5F)和Classname(00435E60),在其右边就可以看见“OLLYDBG”字符。部分代码如下:
00435E37. 6A 00 push 0 : /lParam = NULL
00435E39. 51 push ecx : |hInst => 00400000
00435E3A. 6A 00 push 0 : |hMenu = NULL
00435E3C. 6A 00 push 0 : |hParent = NULL
00435E3E. 8B45 E8 mov eax,dword ptr ss: : |
00435E41. 50 push eax : |Height
00435E42. 8B55 EC mov edx,dword ptr ss: : |
00435E45. 52 push edx : |Width
00435E46. 8D96 08180000 lea edx,dword ptr ds: : |
00435E4C. 8B4D F0 mov ecx,dword ptr ss: : |
00435E4F. 51 push ecx : |Y
00435E50. 8D8E 32180000 lea ecx,dword ptr ds: : |
00435E56. 8B45 F4 mov eax,dword ptr ss: : |
00435E59. 50 push eax : |X
00435E5A. 68 0000CF02 push 2CF0000 : |Style = WS_OVERLAPPED|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN|WS_SYSMENU|WS_THICKFRAME|WS_CAPTION
00435E5F. 52 push edx : |WindowName
00435E60. 51 push ecx : |Class=
00435E61. 6A 10 push 10 : |ExtStyle = WS_EX_ACCEPTFILES
00435E63. E8 34950700 call <jmp.&USER32.CreateWindowExA> : \CreateWindowExA
我们转到内存中可以看见下面的数据。这里出现了两次“OLLYDBG”,它们分别就是OLLYDBG窗口的Caption和Classname值,用UE去相应的地方改一改就行了。
先用UltraEdit修改OD原程序中所有Ollydbg字符串,替换字符我填的是ByCrack,注意字节数必须相等,不然程序被你自己Kill。填入字符随意,反正不能是Ollydbg就行。
删除OLLYDBG.ini,下次运行我们修改过好的ByCrack.exe就会自动的在当前目录创建ByCrack.ini文件了。改变修改后文件名为ByCrack,留下OLLYDBG原程序,运行ByCrack载入Acprotect程序,仍然被杀,Acprotect除了几个系统进程不感兴趣,发现其它载入调试它的东西一律杀,改为Cmd.exe这个名字就不会被杀(建议把改变修改后文件名为ByCrack.exe 拷贝一份,重命名为Cmd.exe这样的系统程序名称。注意,这里是重命名)。此时的Cad.exe基本可以通杀了。
不过改了名就不能载入插件了,如果OLLYDBG没有插件,对于我们来说那是多么可怕的事……大家不要灰心,继续往下看。
第二步:加入插件
先设置好件目录。
现在把CmdBar.dll插件放在所指向的Plugin目录,当我们运行自己修改过的OLLYDBG(我的是ByCrack)时会提示“插件错误”,
“确定”,关闭ByCrack.exe,用UltraEdit打开CmdBar.dll,查找替换OLLYDBG为ByCrack,然后保存。这样就可以使用插件了:
现在用我们的Cmd.exe就可以调试Acprotect、EPE这样的猛壳了!作业完成!由于水平有限,错误之处敬请指出。
[ 本帖最后由 tigerisme 于 2007-1-21 17:16 编辑 ] 修改牛刀难度大了点,楼主是否放个已修改好的给我们用用:handshake 我也同意楼上的意见,直接放一个免杀的算了. "Ollydbg汉化版绝对不能加壳,不然程序无法运行"这句话不敢苟同,我加了Themida,完全没有问题;P