• 标 题:轻松打造你自己的OllyDbg
  • 作 者:kongfoo
  • 时 间:2003年12月10日 09:08
  • 链 接:http://bbs.pediy.com

改掉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在运行的,呵呵...