能力值:
( LV3,RANK:30 )
|
-
-
2 楼
如果只是文本框, 获得文本框句柄后用getwindowtext
|
能力值:
( LV13,RANK:260 )
|
-
-
3 楼
先找到存储数字的地址,然后周期读取(这个周期应该稍微比软件的周期断一点)。。。之前当然还需要获取句柄==哪些通常的操作。。。qq的登录输入框貌似也是这样发送伪数据的。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
存储数字的内存,应该是操作系统来分配的,操作系统会保证内存使用得到最优,所以这个地址就可能是不断变化的地址,并不是一成不变的固定地址。
QQ输入框中的字符,若是从键盘输入的,是可以通过钩子捕获的,因为木马只要截取键盘输入消息并记录键盘输入就可以,键盘输入(另一个硬件的输入)是可以自己编写软件来截取的。但截取另一个软件中的数据,就不一样了。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
如果是标准控件,可以挂钩WM_SETTEXT消息,这样控件文本内容变动的时候你就知道了。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
不知道有没有曲解你的意思
我是菜鸟,我就用菜鸟的方法了哈,可以用WM_GETTEXT来获得文本框的内容
TCHAR string[256]={0};
HWND a=FindWindow(NULL,"OneNum");
HWND b=FindWindowEx(a,NULL,"Edit",NULL);
SendMessage(b,WM_GETTEXT,sizeof(string),(LPARAM)string);
MessageBox(NULL,string,"catch numbers",MB_OK);
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
谢谢大家的回复,我用wep的方法可以在MFC下实现捕获一个这样的数字。
TCHAR string[256]={0};
HWND a1 = ::FindWindow(NULL,"OneNum");
HWND b1 = ::FindWindowEx(a1,NULL,"Edit",NULL);
::SendMessage(b1,WM_GETTEXT,sizeof(string),(LPARAM)string);
::MessageBox(NULL,string,"catch numbers",MB_OK);
若是一个对话框下又多个文本框且每一个文本框上显示的数字都不一样,怎么样才能将他们一一识别出来呢?比如附件中的程序,我又加了几个文本框......
|
能力值:
( LV9,RANK:610 )
|
-
-
8 楼
[QUOTE=ybdesire;928440]谢谢大家的回复,我用wep的方法可以在MFC下实现捕获一个这样的数字。
TCHAR string[256]={0};
HWND a1 = ::FindWindow(NULL,"OneNum");
HWND b1 = ::FindWindowEx(a1,NULL,"Ed...[/QUOTE]
如果多了几个 那你就遍历这个窗体的所有edit控件 都找到他们的句柄
然后 用gettext消息获得数据
1.通过findwindow找到主窗体句柄 假设是 hWnd
2.EnumChildWindow来遍历
3.GetClassName获得控件类名 判断如果是 edit 就认为是edit控件。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
学习
|
能力值:
( LV15,RANK:670 )
|
-
-
10 楼
找个游戏修改器试试。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
谢谢blueapplez提供的方法,这个方法可以把所有对话框上的数据都捕获了;
还有一个问题,通过这种方法是可以捕获出很多数据,但不清楚这些数据的含义啊,怎么才能知道捕获到的数据具体是什么含义呢?
|
能力值:
( LV9,RANK:610 )
|
-
-
12 楼
自己找找对应关系 就行了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
可以这样找对应关系:
HWND hfwnd = ::FindWindow(NULL,"OneNum");
HWND b1 = ::FindWindowEx(hfwnd,NULL,"Edit",NULL);
HWND b2 = ::GetWindow(b1,GW_HWNDNEXT);
HWND b3 = ::GetWindow(b2,GW_HWNDNEXT);
::SendMessage(b1,WM_GETTEXT,sizeof(str1),(LPARAM)str1);
::SendMessage(b2,WM_GETTEXT,sizeof(str2),(LPARAM)str2);
::SendMessage(b3,WM_GETTEXT,sizeof(str3),(LPARAM)str3);
经过试验,通过GetWindow找到的内容是固定的,也就可以通过递归GetWindow来寻找对话框中的所有控件上的内容.....但不确定原理上多次用GetWindow找到的内容是否固定,如果不固定就麻烦了... ...
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
学习一下!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
还有,是否有类似WM_GETPOSITION消息,能获取控件位置,这样更方便找对应关系了丫
|
能力值:
( LV13,RANK:410 )
|
-
-
16 楼
分析程序可以看出,程序调用MFC42.#2370_DDX_Text向文本框输出字符,所以也可以注入到进程中,拦截这个API,然后向自己的窗口发送消息,这样的话,可以做到数据的及时更新。当然你得做下参数的判断以确定这个文本是你需要的控件将要更新的内容。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
请问你是怎么分析程序的?MFC42.#2370_DDX_Text是什么?“注入到进程中,拦截这个API,然后向自己的窗口发送消息”需要用到什么技术,能在说详细一些吗?
|
能力值:
( LV9,RANK:610 )
|
-
-
18 楼
他逆了一下你的软件
发现设置界面上的CEdit的内容 是用函数MFC42.#2370_DDX_Text。
所以你需要写一个dll
这个dll 来hook MFC42.#2370_DDX_Text函数
然后注入到你的软件的进程
这样你就能获得CEdit的数据了 然后把内容发到你自己的窗体上
就这个思路。
需要用到的主要知识点有 api拦截 dll注入。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
try cheat engine. you will be amazed
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
呵呵,谢谢你的提示,是用OD逆的么?枉我2007就注册看雪,暴力了几个crackme就没能坚持下去,现在只能空后悔了.....
|
|
|