能力值:
( LV2,RANK:140 )
|
-
-
2 楼
最近练习了对PE文件的操作,根据我个人的编程经验认为(经验之谈,无理论依据),PE header是不可以读写的(在我写的时候会引发异常)
如果你想操作PE头的话,就把它拷贝到自己分配的内存空间里(GlobalAlloc RtlMoveMemory),修改后再直接写回原文件(WriteFile)。
|
能力值:
( LV9,RANK:610 )
|
-
-
3 楼
我也不知道,所以就有了下面的code,结果是: 修改不成功!
#include "stdafx.h"
#include "windows.h"
int main(int argc, char* argv[])
{
DWORD dwOldProtect;
DWORD *lpAddr = (DWORD *)0x0040000;
BOOL bOk = FALSE;
for (UINT i=0; i<(0x1000/4); i++)
{
lpAddr++;
bOk = VirtualProtect( (LPVOID)lpAddr, 4,PAGE_EXECUTE_READWRITE, &dwOldProtect );//去掉代码区内存保护
if (bOk == TRUE)
{
printf("修改属性成功!\n");
return 0;
}
}
printf("修改不成功!\n");
return 0;
}
|
能力值:
( LV9,RANK:610 )
|
-
-
4 楼
To tangjiutao:
你的方法是修改其他的PE文件,修改自身 远远没有那么简单!
|
能力值:
( LV6,RANK:90 )
|
-
-
5 楼
要改PE头是可以的,另加载的地址一般是imagebase处
上述失败的代码应该是0x00400000这里少了0
|
能力值:
( LV9,RANK:610 )
|
-
-
6 楼
正解!!! 谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
学习学习
|
能力值:
( LV2,RANK:140 )
|
-
-
8 楼
哦,再研究一下
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
3楼5楼说完了
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
很多压缩壳不都是在最后通过修改PE头来修来区段的属性么。
也是通过VirtualProtect来提权的,应该是可以修改的
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
貌似不对 建议楼上几位多测试几次
我测试的结果的确是 多数可以 偶尔不可以
我可以确定没有少0....^_^
|
能力值:
( LV6,RANK:90 )
|
-
-
12 楼
出了问题不一定是少0好不好
我对这个分没什么兴致,不要结果有一点不同就要别人怎么怎么样
|
能力值:
( LV9,RANK:610 )
|
-
-
13 楼
给2个例子啊 给一个可以的例子 一个不可以的例子 打包发上来 这样讨论没什么意义
|
|
|