能力值:
( LV4,RANK:50 )
|
-
-
2 楼
1. 为了支持ASLR, 2010编译出来的exe默认带有重定位表
2. 呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
好像ImageBase的地址是优先装入地址,就是说如果ImageBase里指定的地址被其他占用,就另选地址
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
感谢wmbol的回答,第一个问题我明白了
但是关于第2个问题的呵呵,我还不是很懂.................................
能讲详细点吗?? 还是其他人有答案也行
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
感谢WMBOL的回答,第一个问题我明白了
但是关于第2个问题的呵呵,我还不是很懂.................................
能讲详细点吗??
BY 成长中的菜鸟
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
第二个问题,没记错的话用户空间的0X00000000-0X00010000是属于空指针分配区,禁止访问读写,0X00010000-0X7FFEFFFF才可以访问,0X7FFEFFFF-0X7FFFFFFF的64KB的区域也是禁止访问读写的。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
顶!!!!!!!我回帖了!!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
不要认为应用层的地址是0x00000000-0x7fffffff一样的有些地址是不能的读的,自己找一本有关内核书籍看看就明白了
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
感谢htpidk 的回答,小弟大致上了解了,,但还有个小问题,我用olldbg看从0x00000000开始的资料断,ollydbg却可以读出资料,他是怎么做到的? 是某种RING0级的方法吗?
(会这样问的原因是因为我写的程序有先提权过,所以一般应用程序应该无法更高了(就我所知))
下面放我用的提权代码
void UPPRI()
{
HANDLE hToken;
LUID luidTmp;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hToken);
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luidTmp);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = luidTmp;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL);
}
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
1,0X00000000在普通程序结构下不可读。指向空指针,方便程序异常使用
2,OD可读的原因你去看ReadProcessMemory,我记得那段是引用一个空指针地址,
3,如果你想做一个Ring3可读0X00000000地址,需要改写虚拟地址映射表。把0X00000000映到一个有意义的物理地址上。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
0X7FFEFFFF应该是PEB 可读不可写,要是PEB不可读,那麻烦可大了,哈哈。各种死进程
|
|
|