首页
社区
课程
招聘
兼容VC,Softice快捷键标准的ollydbg,F5,F8,F10,Ctrl+F5
发表于: 2006-12-29 15:05 13814

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

cpu 活跃值
1
2006-12-29 15:05
13814

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日


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (17)
雪    币: 211
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
修补过的文件上传失败,大家先看着文档先吧,呵呵。。。!
2006-12-29 15:06
0
雪    币: 50161
活跃值: (20605)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
呵~Cpu还有啥好东西一起拿出来
2006-12-29 15:07
0
雪    币: 221
活跃值: (20)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
真乃牛人也,学习ing
2006-12-29 15:08
0
雪    币: 211
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
看雪,上传不了文件,你在线Q我,呵呵!
2006-12-29 15:20
0
雪    币: 560
活跃值: (359)
能力值: ( LV13,RANK:1370 )
在线值:
发帖
回帖
粉丝
6
注册日期: Jun 2004
来自:
帖子: 19
精华: 1
应该属于超级水牛类.
2006-12-29 15:23
0
雪    币: 211
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
修正一些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
2006-12-29 16:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
good job
2006-12-29 16:36
0
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
9
主要是学习方法。
2006-12-29 16:41
0
雪    币: 440
活跃值: (822)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
10
已经习惯了

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

期待一个完美版本。
2007-1-3 10:28
0
雪    币: 211
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
我已经把一个修改后的版本上传到看雪的FTP里面,有兴趣的朋友可以去下来试一试!
2007-1-4 09:23
0
雪    币: 50161
活跃值: (20605)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
18
最初由 cpu 发布
我已经把一个修改后的版本上传到看雪的FTP里面,有兴趣的朋友可以去下来试一试!


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

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