首页
社区
课程
招聘
[旧帖] [原创]修改OllyDbg附加窗口代码,实现可双击列表项目附加进程![求邀请码] 0.00雪花
发表于: 2012-11-14 13:47 1675

[旧帖] [原创]修改OllyDbg附加窗口代码,实现可双击列表项目附加进程![求邀请码] 0.00雪花

2012-11-14 13:47
1675
大家都知道OD的附加窗口的列表双击不是不是跟其他的列表一样代表确认,而是无动作。。。
不管是各种修改版本OD,还是ImmDbg,都一样,也没有相关插件,想来为这东西写个插件也腻蛋疼了。
相信很多人都手贱双击过那个列表,希望它能附加,结果碰了一脸猪血,现在我们就让这个愿望实现吧!

首先用Spy++看那个列表窗口的相关信息,得知父窗口是附加对话框,类名是APROCESS。

这是一个特殊的类,而看列表的样式跟我们写OD插件的时候的列表很像,猜应该就是同一个处理方式。而这个特殊的类名肯定需要注册,我们可以根据字符串快速定位关键call。
打开OD,载入OD,搜索所有字符串参考,在结果中搜索“APROCESS”,找到2个结果:

双击第一个,来到:

可以看到是调用一个Registerotclass的函数注册类的(PS:第二个是CreateWindowEx),这个函数在OD的PDK中有完整的声明,得知最后一个参数是指向WNDRPOC的,那现在这个APROCESS的WNDPROC过程就是0x477C90,跟入这个call
我们知道OD的PDK中,双击列表框消息的常量是WM_USER_DBLCLK,这个定义为WM_USER+111,也就是0x46F,我们在这个WNDPROC上下条件断点,看看能不能断到这个消息:

下了断点后,在被调试的OD中打开附加窗口,随便双击一个项目,哈哈,看到断下来了!

跟下去,看看OD如何处理这个消息,结果发现OD根本默认就没处理这个消息,连Tablefunction都不call,直接扔给DefWindowProc了。。。

现在办法只有一个,就是我们写入shellcode,自己处理这个消息,思路有2个:
1、处理这个消息,使用开发OD插件的方式,call Getsortedbyselection函数,然后在返回的结构中找到想关信息,调用OD内部的附加call进行附加。
这样有几个问题,Getsortedbyselection需要一个t_sorted的指针,这个问题到是好解决,在WNDPROC的代码中,有一个call Destroysorteddata的,想来上面那个就是OD内部这个t_sorted了。。。
还有就是使用OD的附加call的问题,这个我没详细研究,就不说了。。。
2、处理这个消息,给OD发送模拟附加按钮的点击消息。

大家一看就知道哪个稳定和简单,那我们就开始做把!

写入shellcode我们需要有一片代码空间,把DASM窗口拉下去,可以看到在IAT表底部有一篇全0区域,这是大多数EXE都有的,不过OD这片区域相对来说小了点,不过也完全够用了。

我们把shellcode定位在0x4AF644,我们改下0x477C90的函数头,改成JMP 4AF644,这样我们就破坏了原始函数的3行代码,后面需要恢复的:
PUSH EBP
MOV EBP,ESP
MOV EAX,DWORD[EBP+C]

我们的思路是用模拟按钮点击消息,所以需要知道这个消息是什么,开一个新的OD载入一个新的OD,打开附加窗口,调试者OD打开窗口列表,找到附加对话框,我们下一个消息断点,按钮的消息一般是WM_COMMAND,可我们需要知道wParam,也就是控件ID。(其实可以在别的程序开一个GetDlgItem的for循环...)

下了消息断点,去被调试的OD点击附加按钮,看到断下来了:

跑回程序的WNDPROC领空,看stack:

控件ID是1.........

这样的话,条件都具备了,我们可以写shellcode了!

切换回被改了0x477C90的OD,定位到0x4AF644,写:

由于我们JMP的是APROCESS的WNDRPOC,所以stack的hWnd不是主窗口的,所以需要用GetParent取得APROCESS的父窗口也就是附加对话框。很高兴,OD的导入表中有GetParent和SendMessageA,而且因为是EXE的导入表,RVA的问题基本上不需要考虑,直接就可以调用。

好了,现在在那个被调试的OD中打开附加窗口,双击,哈哈,附加上去了!现在我们直接复制所有修改到新的EXE文件,这个OD就是我们修改后附加窗口列表支持双击的OD了!

文章就到这里了,版主能不能给我一个邀请码呢,上次我已经发过一篇文章求邀请码了(http://bbs.pediy.com/showthread.php?t=158034),结果直接就沉大海了。。。

我随便找了个52的OD修改了下,附件是修改后的EXE。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持楼主得到邀请码。
2012-11-14 13:55
0
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
嗯这篇写的还有点儿水准,哥送楼主个邀请码
邀请码已发请查收Email
2012-11-14 14:44
0
雪    币: 154
活跃值: (91)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
哇嘎嘎,终于转正了!
感谢楼上2位,十分十分感谢b23526前辈的认同和帮助,小弟在此谢过了!
2012-11-14 18:02
0
雪    币: 358
活跃值: (146)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
山野妹子研究的方向果然诡异多端啊。。。
2012-12-20 16:30
0
雪    币: 33
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我承认我双击过,还不止一次呢
2012-12-23 22:29
0
雪    币: 157
活跃值: (40)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
经典。非常感谢学习了!!!!!!!
2012-12-25 12:03
0
游客
登录 | 注册 方可回帖
返回
//