能力值:
( LV6,RANK:93 )
|
-
-
2 楼
你的目的不止行数吧,参考https://github.com/lynnux/QuickRoom,很早以前挤vs房间的工具,它就是跨进程读取vs的房间list的。
在https://github.com/lynnux/QuickRoom/blob/master/QuickRoom/maindlg.CPP 212行:
#define ListView_GetItemTextEx(hwndLV, i, iSubItem_, pszText_, cchTextMax_) \
{\
_ms_lvi.iSubItem = iSubItem_;\
_ms_lvi.cchTextMax = cchTextMax_;\
_ms_lvi.pszText = pszText_;\
WriteProcessMemory(hWar3, (LPVOID)((BYTE*)lpGet + sizeof(TCHAR)*MAX_PATH), &_ms_lvi, sizeof(LV_ITEM), NULL);\
SNDMSG((hwndLV), LVM_GETITEMTEXT, (WPARAM)(i), (LPARAM)(LV_ITEM *)((BYTE*)lpGet+sizeof(TCHAR)*MAX_PATH));\
ReadProcessMemory(hWar3, lpGet, lpStr, sizeof(lpStr), NULL);\
}
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
要在对面申请内存空间 然后SendMessage得到信息
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢。我看了一下源代码,这里listctrl也是SysListView32类型的。不是listctrl类型的。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
可以说具体点吗?是不是要用DLL注入的方法?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
把东西发上来。
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
http://bbs.pediy.com/showthread.php?t=33192
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我试过这个方法了,不管用。 我用spy++看过了,它的classname不是SysListView32,而是listctrl
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
|
能力值:
( LV5,RANK:70 )
|
-
-
10 楼
我应该看明白你在讲什么了。你看到一个窗口的子窗口长得酷似SysListView32,其实他也不一定是SysListView32,应为像这类控件我们完全可以自己写个出来,也可以超类化一个出来。
如果我有个消息处理的Message值和LVM_GETITEMCOUNT相等,或者根本就没有LVM_GETITEMCOUNT的消息处理,那就得不到想要的结果,若是超类化的话,可能也会得不到结果(如果屏蔽LVM_GETITEMCOUNT消息的话)。
想你这个情况,应该用spy++查出类的名称,在将程序拖到IDA中,搜索类名的字符串,找到过程地址,如果字符串出现在很多次,因为有的会出现在类注册中等,这是要找窗口特征的处理过程,分析内部结构,当然这可能大题小做了。还有个技巧,在spy++的窗口属性的,有个窗口地址的Edit控件,可能会有窗口地址的值,用windbg来attach,在窗口地址设断,再让他跑,断下来后,在分析,这样要快点。
还有你要自己写个小工具,可以向任何窗口发消息和收消息的工具,这个小工具编写相当简单,不用我说的吧。
对了,你还说不是SysListView32,而且用LVM_GETITEMCOUNT得不到结果,看来,,,我想只有我的这个方法有效了。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
你理解我的意思了。我试试你说的方法看看。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
还是搞不定啊。有人帮忙吗?有酬谢。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
有高手帮忙吗?
|
|
|