首页
社区
课程
招聘
[旧帖] [求助]关于内存搜索的问题 0.00雪花
发表于: 2011-5-15 16:55 5171

[旧帖] [求助]关于内存搜索的问题 0.00雪花

2011-5-15 16:55
5171
最近在写一个内存搜索器,搜索自己进程的,呵呵
我想用VirtualQueryEx从内存虚拟地址1000h的地方开始先获取每个内存块的属性,再根据内存的属性来决定扫还是不扫这块内存,现在的问题是,这个函数总是返回0,因为是扫描自己进程,我第一个参数用的是NULL,是不是这个参数不能为空,还是获取自己内存属性的时候有别的API,请各位大侠指点一下。
还有个问题,我用CE扫描的时候,有的地址前面会加上一个符号,据说这是基地址,我想问下一个地址是不是基地址是根据什么判断的,是不是不在堆栈的地址就是基地址,那怎么才能知道一个地址是不是在堆栈里呢,望各位大侠帮我解惑,小弟感激不尽。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 78
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
VirtualQueryEx如果查本进程,第一个参数要设置为GetCurrentProcess()
另外,如果是本进程查询的话,建议用VirtualQuery函数
一般来说,基址一般就是对象结构指针,而在大部分编译器中,都是储存在固定的寄存器中,由对象的构造函数来生成,可以根据以上特点来确定
2011-5-16 14:23
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
基址就是一个全局变量,这个变量里的成员全部是以它为基准.
比如这样一个类:class test
{
    test();
    ~test();

private:
  char*    name_;
    int    hp_;
   int    mp_;
   role*    role_;
}
在new test()的时候, 其对象的地址为 this(比如:0x0040320),那成员变量 name的地址为this(因为没有虚函数列表),hp_的地址为this+0x4, mp_的地址为this+0x8, role_的地址就为this+oxC;
2011-5-16 15:47
0
雪    币: 49
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有一个很简单的方法可以判断找到的是不是基址,就是查找还有没有指向这个地址的指针.
2011-5-16 15:53
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢楼上3位的回答,但我还是没麽难过呗,内存搜索就是寻找所有内存,把和目标数值相等的过滤出来,过滤出来的只是一个虚拟地址,如何知道这个地址是在一个偏移中,我不会C++,所以不知道什么是类,但2楼和3楼所说的好像是编程中指的基址,和我这个没关系吧,4楼说的,你自己试下就知了,任何一个数值,都能搜索出好几百个来,内存中不可能不存在和一个地址的指针相同的数值
2011-5-17 19:39
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢3位的回答,但2楼和3楼说的基址和我说的这个没关系吧,4楼说的那个方法也不行,随便一个数字(指针也是数字)都能搜索出好几百个来
2011-5-17 19:41
0
雪    币: 78
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
1。基地址一般就是个指针类型的内存地址。一般存在了数据段(基本不会在堆栈段)。  
    2。基址偏移量,就是对象固定属性距离基地址的相对位置。如果对基本汇编和c++不熟的话,就判断这个地址指向的值,在对象的属性发生变化时是不是随着变化,并且在程序重启后是不是不变。基本上就可确定是不是基址。
    3。现实中最有可能是基址是多级指针,用CE在内存中16进制搜索找到的属性(如游戏人物血量)地址,如果能找到几个内存,就要看谁改写了,看怎么改写的,一般改写内容的指针会保存在ESI,ECX,EDX这些寄存器中,接着再搜索这些新找到的指针地址,看还有没有更高级的指针,直到找不到,并且满足2就离真相很近了.
    4.一般查找基址,最好用CE结合ollyice动态调试,用ce找到改写对应内存的代码地址,在ollyice中下断点,动态跟踪,很容易确定。
   如果,你还不明白的话,建议你先把CE的教学程序通关,熟悉下ollyice,再补点基础知识
2011-5-18 18:42
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
。。。。。。。
2011-5-19 16:45
0
雪    币: 175
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
在梁肇兴 的编程高手里面 有这个的例程。可以参考下。
2011-5-23 20:25
0
游客
登录 | 注册 方可回帖
返回
//