首页
论坛
专栏
课程

兼容VC,Softice快捷键标准的ollydbg,F5,F8,F10,Ctrl+F5

2006-12-29 15:05 11619

兼容VC,Softice快捷键标准的ollydbg,F5,F8,F10,Ctrl+F5

cpu
1
2006-12-29 15:05
11619
ollydbg的快捷键是按Borland公司的调试器规则定义的,但没有让人设置,所以不太方便一向用VC,Softice的人的习惯使用,
为此,我决定改变一下它,让它可以比较完美的支持VC,Softice的快捷键风格,同时把修改过程Post出来,让更多人可以DIY
ollydbg一些功能。
以下我们先看有那几个键和VC,Softice有差别:
                                Ollydbg                        VC                Softice
Run                                F9                                F5                        F5
Break                        Alt+B                        F9                        F9
P                                        F8                                F10                        F10
T                                        F7                                F11                        F8
Restart        Ctrl+F9   Ctrl+F5  -----
我们的目的就是要对ollydbg进行完美的修改,让它支持Softice的快捷键盘,
以下是Windows系统101键盘按键的定义:
#define VK_F1             0x70
#define VK_F2             0x71
#define VK_F3             0x72
#define VK_F4             0x73
#define VK_F5             0x74
#define VK_F6             0x75
#define VK_F7             0x76
#define VK_F8             0x77
#define VK_F9             0x78
#define VK_F10            0x79
#define VK_F11            0x7A
#define VK_F12            0x7B
以下是Windows系统键盘按键消息的定义:
#define WM_KEYFIRST                     0x0100
#define WM_KEYDOWN                      0x0100
#define WM_KEYUP                        0x0101
#define WM_CHAR                         0x0102
#define WM_DEADCHAR                     0x0103
#define WM_SYSKEYDOWN                   0x0104
#define WM_SYSKEYUP                     0x0105
#define WM_SYSCHAR                      0x0106
#define WM_SYSDEADCHAR                  0x0107
#define WM_KEYLAST                      0x0108
现在准备好Ida Pro 5.0,Ultra Edit,现在开始找代码修改位置,我先在ollydbg试了一下,发现F5已经给一个窗口处理过程占用了,
F10也给弹出菜单过程占用,因为这两个功能都不是什么常用的东西,好,先让它们搬搬家,方法就是F5->F4(好象没有给使用),
F10->F11(好象没有给使用),搬家过程很简单,对着ollydbg说声,我可爱的ollydbg,请你把它们移移位置吧。。。
打开Ida Pro,把ollydbg.exe载入去,反汇编,直接到以下地址:
F5->F4搬家过程:
.text:00431E45                 cmp     eax, 100h
.text:00431E4A                 jnz     short loc_431EAB
.text:00431E4C                 cmp     edx, 74h                                                                                ;把这里改为73h(VK_F5->VK_F4)
.text:00431E4F                 jnz     short loc_431EAB
.text:00431E51                 test    ecx, ecx
.text:00431E53                 jnz     short loc_431EAB
.text:00431E55                 lea     eax, [ebp+lParam] ; int
.text:00431E58                 push    eax             ; lParam
.text:00431E59                 push    0               ; wParam
.text:00431E5B                 push    229h            ; Msg
.text:00431E60                 mov     edx, hWndParent
.text:00431E66                 push    edx             ; hWnd
.text:00431E67                 call    SendMessageA
F10->F11搬家过程:
.text:004592F2 loc_4592F2:                             ; CODE XREF: _Tablefunction+AF2j
.text:004592F2                 cmp     [ebp+uMsg], 104h
.text:004592F9                 jz      short loc_459304
.text:004592FB                 cmp     [ebp+uMsg], 47Ah
.text:00459302                 jnz     short loc_459355
.text:00459304
.text:00459304 loc_459304:                             ; CODE XREF: _Tablefunction+F9Dj
.text:00459304                 cmp     [ebp+arg_C], 79h                                                ;把这里改为79h(VK_F10->VK_F11,不过后来发现好象F11不能实现F10的作用,但因为这功能没有多大用作,不浪费时间研究了)
.text:00459308                 jnz     short loc_459338
.text:0045930A                 mov     dword_4BB408, 1
.text:00459314                 push    0               ; lParam
.text:00459316                 push    0               ; wParam
.text:00459318                 push    465h            ; Msg
.text:0045931D                 mov     edx, [ebp+hWnd]
.text:00459320                 push    edx             ; hWnd
.text:00459321                 call    SendMessageA
现在冲突的键都移除了,可以把我们要的Softice的按键重定义了:
F8->F10:
.text:00431F80                 cmp     eax, 100h                                                                        ;改为104h
.text:00431F85                 jnz     short loc_431FB8
.text:00431F87                 cmp     edx, 77h                                                                                ;改为79h
.text:00431F8A                 jnz     short loc_431FB8
.text:00431F8C                 test    ecx, ecx
.text:00431F8E                 jz      short loc_431F9A
.text:00431F90                 push    2
.text:00431F92                 call    _Animate
F7->F8:
.text:00431F48                 cmp     eax, 100h
.text:00431F4D                 jnz     short loc_431F80
.text:00431F4F                 cmp     edx, 76h                                                                                ;改为77h
.text:00431F52                 jnz     short loc_431F80
.text:00431F54                 test    ecx, ecx
.text:00431F56                 jz      short loc_431F62
.text:00431F58                 push    1
.text:00431F5A                 call    _Animate
F9->F5:
.text:00431FB8                 cmp     eax, 100h
.text:00431FBD                 jnz     short loc_432004
.text:00431FBF                 cmp     edx, 78h                                                                                ;改为74h
.text:00431FC2                 jnz     short loc_432004
.text:00431FC4                 test    ecx, ecx
.text:00431FC6                 jz      short loc_431FE6
.text:00431FC8                 push    3
.text:00431FCA                 call    _Animate
.text:00431FCF                 pop     ecx
.text:00431FD0                 push    1               ; int
.text:00431FD2                 push    esi             ; int
.text:00431FD3                 push    2               ; int
.text:00431FD5                 push    0               ; int
.text:00431FD7                 push    0               ; int
.text:00431FD9                 call    _Go
再改:
.text:00432004 loc_432004:                             ; CODE XREF: sub_431B90+42Dj
.text:00432004                                         ; sub_431B90+432j
.text:00432004                 cmp     eax, 104h
.text:00432009                 jnz     short loc_43202E
.text:0043200B                 cmp     edx, 78h                                                                                ;改为74h
.text:0043200E                 jnz     short loc_43202E
.text:00432010                 push    5
.text:00432012                 call    _Animate
.text:00432017                 pop     ecx
.text:00432018                 push    1               ; int
.text:0043201A                 push    esi             ; int
.text:0043201B                 push    2               ; int
.text:0043201D                 push    0               ; int
.text:0043201F                 push    0               ; int
.text:00432021                 call    _Go
.text:00432026                 add     esp, 14h
.text:00432029                 jmp     loc_4322AC

Ctrl+F9->Ctrl+F5:
.text:00431D3B                 cmp     eax, 100h
.text:00431D40                 jnz     short loc_431D5F
.text:00431D42                 cmp     edx, 71h                                                                                ;改为74h
.text:00431D45                 jnz     short loc_431D5F
.text:00431D47                 test    ecx, ecx
.text:00431D49                 jz      short loc_431D5F
.text:00431D4B                 push    0FFFFFFFFh
.text:00431D4D                 push    offset byte_4D5B80
.text:00431D52                 call    _OpenEXEfile
.text:00431D57                 add     esp, 8
.text:00431D5A                 jmp     loc_4322AC
.text:00431D5F loc_431D5F:                             ; CODE XREF: sub_431B90+1B0j
.text:00431D5F                                         ; sub_431B90+1B5j ...
.text:00431D5F                 cmp     eax, 104h
.text:00431D64                 jnz     short loc_431D96
.text:00431D66                 cmp     edx, 71h                                                                                ;改为74h
.text:00431D69                 jnz     short loc_431D96
.text:00431D6B                 push    1               ; int
.text:00431D6D                 call    sub_4758A4
.text:00431D72                 pop     ecx
.text:00431D73                 test    eax, eax
.text:00431D75                 jnz     loc_4322AC
.text:00431D7B                 call    sub_47540C
.text:00431D80                 push    0
.text:00431D82                 push    0
.text:00431D84                 push    474h
.text:00431D89                 call    _Broadcast
.text:00431D8E                 add     esp, 0Ch
.text:00431D91                 jmp     loc_4322AC

F2->F9
.text:0041F8CB                 cmp     [ebp+c], 71h                                                                ;改为78h
.text:0041F8CF                 jnz     short loc_41F91D

再改:
.text:004199ED                 cmp     [ebp+arg_4], 71h                                                ;改为78h
.text:004199F1                 jnz     loc_419C1B
这样全部设置都按Softice的设置了,需要还差了一些些,不过好象不过区别不大了,最后,为了完美收场,打开VC6,修改菜单说明。
终于结局,呵呵。。。。好多年没有写文章了,这一次有机会,就顺手把操作过程写一下,不到之处还请多多见谅,因为看雪那天
问我要新年的礼物,我手头都是半成品,也给不出一个新年礼物,这里就当是一个新年礼物吧。
                                                                                                                                                                                        Cpu
                                                                                                                                                                                        2006年12月29日

2020安全开发者峰会(2020 SDC)议题征集 中国.北京 7月!

最新回复 (17)
cpu 1 2006-12-29 15:06
2
0
修补过的文件上传失败,大家先看着文档先吧,呵呵。。。!
kanxue 8 2006-12-29 15:07
3
0
呵~Cpu还有啥好东西一起拿出来
xiaohui_82 2 2006-12-29 15:08
4
0
真乃牛人也,学习ing
cpu 1 2006-12-29 15:20
5
0
看雪,上传不了文件,你在线Q我,呵呵!
laomms 34 2006-12-29 15:23
6
0
注册日期: Jun 2004
来自:
帖子: 19
精华: 1
应该属于超级水牛类.
cpu 1 2006-12-29 16:32
7
0
修正一些F2->F9的问题:
刚测试,源代码窗设置断点有问题,发现对于F2->F9还有好几处地方要修改:
.text:00494AA4                 cmp     ebx, 71h                                                                                ;改为78h
.text:00494AA7                 jnz     short loc_494AF9

.text:00494FD6                 push    1
.text:00494FD8                 push    71h                                                                                                ;改为78h
.text:00494FDA                 mov     edx, [ebp+var_14]
.text:00494FDD                 push    edx
.text:00494FDE                 call    sub_419974

源代码菜单设置断点有问题,以下修改:
.text:00494FAD                 push    71h                                                                                                ;改为78h
.text:00494FAF                 mov     eax, [ebp+var_14]
再改:
.text:0041998F                 cmp     [ebp+arg_4], 71h                                                ;改为78h
.text:00419993                 jnz     short loc_4199A7
zhucheba 2006-12-29 16:36
8
0
good job
binbinbin 28 2006-12-29 16:41
9
0
主要是学习方法。
winndy 17 2006-12-29 18:17
10
0
已经习惯了

做成插件最好,可以设置为兼容bc的,也可以使用默认的
morning 1 2006-12-29 18:44
11
0
这样修改兼容性和稳定性都成问题,使用hook好一些吧,最好能做成插件,以及自定义,直接修改程序的方法觉得不是很好
yijun8354 12 2006-12-31 15:15
12
0
好帖,学习~~~~~~~~
cpu 1 2007-1-2 09:14
13
0
Re:这样修改兼容性和稳定性都成问题,使用hook好一些吧,最好能做成插件,以及自定义,直接修改程序的方法觉得不是很好
Hook的速度慢,直接修改需然可能会在前期带来一些bug,但是只要不断测试和完善,就可以做得很完美,就象汉化版本一样,所以我特别提供了修改的过程和代码,以作大家研究和参考,修改版本还在完善中,想帮助测试的朋友可以在看雪ftp upload里面下载,有问题可以直接报Bugs,我会找时间看一看,一直修改到它很完善为止。
gavinyu 2007-1-2 11:34
14
0
好贴~刚开始也不习惯,不过现在都已形成条件反射了,呵...期待完美版本~~~~
darkbasic 2007-1-2 15:35
15
0
支持一下 ,最好提供下载
Tase 1 2007-1-3 10:28
16
0
我用VC很多年,用OD时经常按错!

期待一个完美版本。
cpu 1 2007-1-4 09:23
17
0
我已经把一个修改后的版本上传到看雪的FTP里面,有兴趣的朋友可以去下来试一试!
kanxue 8 2007-1-4 09:27
18
0
最初由 cpu 发布
我已经把一个修改后的版本上传到看雪的FTP里面,有兴趣的朋友可以去下来试一试!


可以直接传到论坛上来,单击回复按钮,选择文件(最大1M)

试了一下,原来OD的F4功能现在用什么代替了?SoftICE中对应的是F7吧
F4---运行到光标所在行
上传的附件:
游客
登录 | 注册 方可回帖
返回