安全中国首页 > 文章中心 > 工具技巧
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

第三卷 OllyDBG 改造系列 第一篇 轻松打造你自己的OllyDbg

更新时间:2008-9-26 0:15:41
责任编辑:高远
热 点:
作者:kongfoo

改掉OllyDbg标题 

kongfoo/2003.12.10 

目标:改掉OD窗口的caption和classname。 

思路:在软件启动时改变创建窗口函数的参数。说实话,这样做是第一次,没经验啊,所以下断就下了一大堆:CallWindowProcA,CoInitialize,CoCreateInstance,CreateWindowExA,DefWindowProcA,DispatchMessageA,EnableWindow,LoadIconA,SetWindowLongA,SetWindowTextA,ShowWindow。宁可杀错,不可放过。 

F9之后先在一个LoadIconA停下,记下地址,再F9,先看看启动程序会经过哪些断点,然后把多余的断点去掉,再分析... 

很快就找到知道2个关键地方:433d46的LoadIconA和433f0f的CreateWindowExA:(LoadIconA载入图标之后就是创建窗体啦,下面是CreateWindowExA部分代码) 

00433EE3 |. 6A 00 PUSH 0 ; /lParam NULL 

00433EE5 |. 51 PUSH ECX ; |hInst > 00400000 

00433EE6 |. 6A 00 PUSH 0 ; |hMenu NULL 

00433EE8 |. 6A 00 PUSH 0 ; |hParent NULL 

00433EEA |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] ; | 

00433EED |. 50 PUSH EAX ; |Height 

00433EEE |. 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14] ; | 

00433EF1 |. 52 PUSH EDX ; |Width 

00433EF2 |. 8D96 A3170000 LEA EDX,DWORD PTR DS:[ESI+17A3] ; | 

00433EF8 |. 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10] ; | 

00433EFB |. 51 PUSH ECX ; |Y 

00433EFC |. 8D8E CD170000 LEA ECX,DWORD PTR DS:[ESI+17CD] ; | 

00433F02 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; | 

00433F05 |. 50 PUSH EAX ; |X 

00433F06 |. 68 0000CF02 PUSH 2CF0000 ; |Style WS_OVERLAPPED|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN|WS_SYSMENU|WS_THICKFRAME|WS_CAPTION 

00433F0B |. 52 PUSH EDX ; |WindowName 看到这2个没有?目标出现! 

00433F0C |. 51 PUSH ECX ; |Class 

跟一下就知道windowName放在4aeedf,class放在4aeeb5,用UE去相应的地方改一改就行啦 

先用d 4aeedf,可以看到OLLYDBG字样,接住是Unable to create the main window,去UE查这个字串就可以找到WindowName啦 

00433F0D |. 6A 10 PUSH 10 ; |ExtStyle WS_EX_ACCEPTFILES 

00433F0F |. E8 6A3D0700 CALL <JMP.&USER32.CreateWindowExA> ; CreateWindowExA 

UE中找Unable to create the main window,OLLYDBG的偏移量为ae4df,哪么class字串的偏移就是ae4b5了, 

2个地方都改掉。好啦,现在你拥有自己的OllyDbg修改版啦 

小结: 

1、改主窗体标题、类名。 

可以躲过FindWindow系列函数的检查。 

2、改子窗体标题、类名。 

和1的方法相同,作用一样。 

3、改进程名。 

即改文件名,改了后如果出现装载不了插件的情况可以用没改名的OD载入改名的OD,然后直接退出就行。 

可以躲过CreateToolHelp等根据进程名的检查。 

4、对于“...跟踪某些壳的程序仍然被发现,...而且有些程序一载入就运行,怎么也无法停止...”这个问题,我的OD也一样有这样的问题,呵呵,没时间深究,有兴趣的话你可以调试一下OD,跟一下它在载入程序时的动作,会有答案的。。。 

5、除了FindWindow/CreateToolHelp找进程名等方法外,还有其它办法知道OD在运行的,呵呵...

 
相关文章
一日一文章
 
一日一软件
一日一动画