首页
社区
课程
招聘
[求助]一个VC程序用的内存模板创建对话框...求助
发表于: 2009-1-17 11:34 3497

[求助]一个VC程序用的内存模板创建对话框...求助

2009-1-17 11:34
3497
如题:一个VC程序用的内存模板创建对话框
一创建对话框,这个数据就会在内存中出现了。
我希望下内存断点或者硬件断点看数据是怎么产生的。。。结果一运行到了硬件断点(内存断点)程序就报错(内存保护啊之类的报错

我该如何来跟踪这个数据的产生呢?极度迷惘中。。。。希望大家指点

PS:第一次运行到断点产生的数据不是我要跟踪的,是第二次运行到断点才是我要跟踪的,所以利用报错时候提示的语句找到的位置,貌似有可能不对的(个人看法)。。。。。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 220
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有没有办法能让这个内存保护给搞定?
2009-1-17 18:49
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
3
如果是anti-bpm之类的,可以试着下断点VirtualProtect/VirtualProtectEx,看看它保护的内存页面范围和seh。

如果内存空间是动态分配的,那首先要在分配内存的地方下断点,然后在下内存断点。
2009-1-17 18:54
0
雪    币: 220
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
嗯,偶知道错了。。。呵呵,空口白话的,大家是很难帮上偶。。。。。上代码上代码,呵呵

00460809   . /74 0C         je      short 00460817
0046080B   . |FF75 EC       push    dword ptr [ebp-14]               ; /hMem
0046080E   . |FF15 68224700 call    dword ptr [<&KERNEL32.GlobalLock>; \GlobalLock
00460814   . |8945 08       mov     dword ptr [ebp+8], eax
00460817   > \834E 2C FF    or      dword ptr [esi+2C], FFFFFFFF
0046081B   .  834E 24 10    or      dword ptr [esi+24], 10
0046081F   .  56            push    esi
00460820   .  E8 5E0F0000   call    00461783
00460825   .  8B45 0C       mov     eax, dword ptr [ebp+C]
00460828   .  3BC3          cmp     eax, ebx
0046082A   .  75 04         jnz     short 00460830
0046082C   .  33C0          xor     eax, eax
0046082E   .  EB 03         jmp     short 00460833
00460830   >  8B40 1C       mov     eax, dword ptr [eax+1C]
00460833   >  53            push    ebx                              ; /lParam
00460834   .  68 79044600   push    00460479                         ; |pDlgProc = XXXX.00460479
00460839   .  50            push    eax                              ; |hOwner
0046083A   .  FF75 08       push    dword ptr [ebp+8]                ; |pTemplate
0046083D   .  FF75 10       push    dword ptr [ebp+10]               ; |hInst
00460840   .  FF15 88244700 call    dword ptr [<&USER32.CreateDialog>; \CreateDialogIndirectParamA

目前的困惑就是在00460840这个指令一执行以后。。。内存就出现了那该死的数据
我该怎么知道那数据如何产生的呢?

我在00460479下了断点的。。。。在00460840处一F8就来到了00460479,但是内存中已经产生了那该死的数据。。。
个人感觉应该是从模板产生了这个数据,但是在产生之前,我根本不知道数据该是什么样子。。。所以不知道怎么去搜索内存中的模板
麻烦大家指点迷津。。。。
2009-1-17 20:04
0
雪    币: 220
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
自己顶一个。。。。。谁帮忙指点下咯
2009-1-17 22:21
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
6
你越补充我越糊涂了,你说的数据是指什么数据???

The CreateDialogIndirectParam function creates a modeless dialog box from a dialog box template in memory.


lpTemplate
[in] Pointer to a global memory object that contains the template CreateDialogIndirectParam uses to create the dialog box. A dialog box template consists of a header that describes the dialog box, followed by one or more additional blocks of data that describe each of the controls in the dialog box. The template can use either the standard format or the extended format.
In a standard template, the header is a DLGTEMPLATE structure followed by additional variable-length arrays. The data for each control consists of a DLGITEMTEMPLATE structure followed by additional variable-length arrays.

In an extended dialog box template, the header uses the DLGTEMPLATEEX format and the control definitions use the DLGITEMTEMPLATEEX format.

After CreateDialogIndirectParam returns, you can free the template, which is only used to get the dialog box started.
2009-1-17 22:25
0
雪    币: 220
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
嗯,是个整数。。。。这个整数用来做另外一个exe的启动参数,唉,说直白点就是个登录器启动游戏客户端。但是这个游戏客户端没有固定的启动参数,每次的参数都不一样

我需要跟踪下这个参数是如何产生的

目前跟踪这个参数,发现在下面的指令
00460840   .  FF15 88244700 call    dword ptr [<&USER32.CreateDialog>; \CreateDialogIndirectParamA
执行以后,内存中就出现了启动参数这个数据

不知道我描述得够清楚了吗?
2009-1-17 22:38
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
8
试试换一个思路,如果这个数据是通过模板产生的,而每次都不一样,那么模板中也一定有某个数据每次运行都不一样。

查看一下lpTemplate参数指向的内存,多运行几次看哪个数据在每次运行时都不同,如果确实有某个数据字段会变化,再参考DLGTEMPLATE或DLGTEMPLATEEX结构体的定义来查看,看它与对话框的什么属性相关。

如果这个模板在每次运行都一样,那么你所说的那个数据就可能不是从模板来的。再想其它办法。
2009-1-17 22:48
0
雪    币: 220
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
嗯,谢谢,这次回复帮助很大,至少让偶知道该从那里下手了
0046083A   .  FF75 08       push    dword ptr [ebp+8]                ; |pTemplate

您的意思是注意观察这个dword ptr [ebp+8]位置后面的内存数据吧?
2009-1-17 23:02
0
游客
登录 | 注册 方可回帖
返回
//