首页
社区
课程
招聘
如何逆向获取另一软件运行时文本框中不断变化的数字
发表于: 2011-2-22 12:12 10267

如何逆向获取另一软件运行时文本框中不断变化的数字

2011-2-22 12:12
10267
见附近,很简单的一个软件。单击RUM,每隔1秒数字会跳动一下。
    现在的问题是,想编写另一个软件,来捕获这个软件文本框中不断变化的数字。我开始的思路是用钩子函数,因为软件中的数字是在定时器消息响应函数中显示的,只要用钩子捕获了WM_TIMER就可以.....但现在发现钩子只能捕获消息,并不能深入到软件中去!!
    请教大家,在不知道源代码的情况下,如何能够获取这个软件中的一些“低权限级”的数据?比如下面这个软件中文本框内不断变化的数字?

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (19)
雪    币: 163
活跃值: (75)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
如果只是文本框, 获得文本框句柄后用getwindowtext
2011-2-22 12:26
0
雪    币: 1149
活跃值: (908)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
3
先找到存储数字的地址,然后周期读取(这个周期应该稍微比软件的周期断一点)。。。之前当然还需要获取句柄==哪些通常的操作。。。qq的登录输入框貌似也是这样发送伪数据的。。。
2011-2-22 12:32
0
雪    币: 93
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
    存储数字的内存,应该是操作系统来分配的,操作系统会保证内存使用得到最优,所以这个地址就可能是不断变化的地址,并不是一成不变的固定地址。
    QQ输入框中的字符,若是从键盘输入的,是可以通过钩子捕获的,因为木马只要截取键盘输入消息并记录键盘输入就可以,键盘输入(另一个硬件的输入)是可以自己编写软件来截取的。但截取另一个软件中的数据,就不一样了。
2011-2-22 14:39
0
雪    币: 357
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
如果是标准控件,可以挂钩WM_SETTEXT消息,这样控件文本内容变动的时候你就知道了。
2011-2-22 17:31
0
雪    币: 271
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wep
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);
2011-2-22 17:37
0
雪    币: 93
活跃值: (62)
能力值: ( 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);

   若是一个对话框下又多个文本框且每一个文本框上显示的数字都不一样,怎么样才能将他们一一识别出来呢?比如附件中的程序,我又加了几个文本框......
上传的附件:
2011-2-22 21:57
0
雪    币: 458
活跃值: (421)
能力值: ( 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控件。
2011-2-22 22:22
0
雪    币: 271
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wep
9
学习
2011-2-23 13:07
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
10
找个游戏修改器试试。
2011-2-23 13:09
0
雪    币: 93
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢blueapplez提供的方法,这个方法可以把所有对话框上的数据都捕获了;
    还有一个问题,通过这种方法是可以捕获出很多数据,但不清楚这些数据的含义啊,怎么才能知道捕获到的数据具体是什么含义呢?
2011-2-23 22:10
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
12
自己找找对应关系  就行了。。。
2011-2-24 10:38
0
雪    币: 93
活跃值: (62)
能力值: ( 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找到的内容是否固定,如果不固定就麻烦了... ...
2011-2-24 16:46
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习一下!!!
2011-2-24 16:50
0
雪    币: 93
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
还有,是否有类似WM_GETPOSITION消息,能获取控件位置,这样更方便找对应关系了丫
2011-2-24 17:04
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
16
分析程序可以看出,程序调用MFC42.#2370_DDX_Text向文本框输出字符,所以也可以注入到进程中,拦截这个API,然后向自己的窗口发送消息,这样的话,可以做到数据的及时更新。当然你得做下参数的判断以确定这个文本是你需要的控件将要更新的内容。
2011-2-24 18:06
0
雪    币: 93
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
    请问你是怎么分析程序的?MFC42.#2370_DDX_Text是什么?“注入到进程中,拦截这个API,然后向自己的窗口发送消息”需要用到什么技术,能在说详细一些吗?
2011-2-24 22:48
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
18
他逆了一下你的软件
发现设置界面上的CEdit的内容 是用函数MFC42.#2370_DDX_Text。

所以你需要写一个dll  
这个dll 来hook MFC42.#2370_DDX_Text函数  
然后注入到你的软件的进程

这样你就能获得CEdit的数据了  然后把内容发到你自己的窗体上
就这个思路。

需要用到的主要知识点有 api拦截  dll注入
2011-2-25 00:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
try cheat engine. you will be amazed
2011-2-25 05:47
0
雪    币: 93
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
    呵呵,谢谢你的提示,是用OD逆的么?枉我2007就注册看雪,暴力了几个crackme就没能坚持下去,现在只能空后悔了.....
2011-2-25 14:25
0
游客
登录 | 注册 方可回帖
返回
//