能力值:
( LV2,RANK:10 )
|
-
-
2 楼
不是这个意思,每个应用程序运行后 ,kernel32之类的dll被映射到进程中的内存里,你修改了pe头部,仅仅是修改了映射到当前进程中的虚拟内存中dll中的函数头,真正的kernel32.dll没被修改。
每个进程都有4g的虚拟内存空间 ,而且和其他进程互不相关。修改了当前进程中的数据对其他进程没影响,对真正的 kernel32.dll也是么影响的
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
这就是虚拟内存的原因。自己可以看看虚拟内存管理器的知识。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这样的(以下地址均为假设):
00401000 push eax
00401001 push eax
00401002 push eax
00401003 push eax
00401000 call 00401173(Call MessageBoxA)
00401173 jmp 7C007283(user32.MessageBoxA)
7C007283 mov edi,edi
7C007285 push ebp
我修改的 7C007283
应该是修改了user32.dll吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
顺便问下知道一个线程的线程名
如何得到它的PID?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
[QUOTE][引用:
最初由 烁皓发布
这就是虚拟内存的原因。自己可以看看虚拟内存管理器的知识。...
这样的(以下地址均为假设):
00401000 push eax
00401001 push eax
00401002 push eax
00401003 push eax
00401000 call 00401173(Call MessageBoxA) 00401173 jmp 7C007283(user32.MessageBoxA)
7C007283 mov edi,edi
7C007285 push ebp
我修改的 7C007283
应该是修改了user32.dll吧?
/QUOTE]
没明白什么意思
根据线程的句柄获取进程id可以调用GetProcessIdOfThread()
原形如下 :DWORD GetProcessIdOfThread(HANDLE Thread);
查msdn吧
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
这些DLL的页面都有COPY_ON_WRITE属性,当向其中写入的时候,Windows会复制一份,在复制的那一份里面满足你的写要求.公共的部分不受影响.
|
|
|