能力值:
( LV6,RANK:80 )
|
-
-
2 楼
我竟然没想到去看ROS的代码,跪了。。。
呃,话说那个WND结构体不是在本进程里面的么,我原来也想到改TEB来模拟其他进程,这样方便多了而且不需要一大堆针对系统的硬编码,可句柄的信息表指针和那个句柄指向的窗口例程函数地址也并不在我的进程内,而在其他进程的地址空间啊,GetWindowLong拿到WND结构体指针明显直接当本进程的地址空间操作了。。结果不是错误的结果就是拒绝访问啊。。。
所以那个TestWindowProcess明显是有必要的吧。。。
还有WND结构体明显在XP和WIN7上完全不同。
|
能力值:
( LV9,RANK:260 )
|
-
-
3 楼
呃,WND结构体大概是共享的,所有进程都能访问,我试过在xp成功获取地址,跟本进程获取的比较,没有区别,绝对没你说的错误或者拒绝访问
而且你要知道GetWindowLong能跨进程获取GWL_STYLE,GWL_EXSTYLE等,没进内核,也没读取进程内存
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
嘿嘿 这东西好!
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
是这个TestWindowProcess
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
学习...........
|
能力值:
( LV3,RANK:30 )
|
-
-
7 楼
学习一下,ReactOS之前了解了一下,貌似还不错,比较接近老版本的windows
|
能力值:
( LV12,RANK:360 )
|
-
-
8 楼
调试了一下,用下面这个方法可以获取取,xp sp3 和win7 64位下测试成功
Hwnd textequ <1202A2H> ;这里是目标窗口的HWND
iatCall GetWindowThreadProcessId,Hwnd,addr ProcessId
mov eax, dword ptr fs:[18H]
mov ecx,[eax+20H]
mov myProcessId,ecx
mov ecx,ProcessId
mov [eax+20H],ecx
iatCall GetWindowLongA,Hwnd,GWL_WNDPROC
push myProcessId
mov ecx, dword ptr fs:[18H]
pop [ecx+20H]
push esi
mov esi,esp
iatCall wsprintfA,addr buff,"wndproc:%X",eax
mov esp,esi
pop esi
iatCall MessageBoxA,0,addr buff,"hi",0
iatCall ExitProcess,0
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
谢谢,太强了。
楼上的汇编代码,边个高手帮转成C++ 或DELPHI 的代码
|
|
|