能力值:
(RANK:1010 )
2 楼
最初由 天涯浪人 发布 在VC下怎么获得函数的大小啊?
函数大小??
是不是文件大小?
DWORD GetFileSize(
HANDLE hFile, // handle of file to get size of
LPDWORD lpFileSizeHigh // pointer to high-order word for file size
);
能力值:
( LV6,RANK:90 )
3 楼
我想用VirtualAllocEx(),CreateRemoteThread()
VirtualAllocEx()中的dwSize怎么确定啊?
在汇编下能用SIZEOFPROC EQU $-PROCNAME,在VC下有什么伪指令可以实现同样的效果啊?
能力值:
( LV6,RANK:90 )
4 楼
我试了一下:
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{}
void end(){}
(UINT)uProcSize=(UINT)end-(UINT)ThreadProc;
在Release模式下可以得到ThreadProc()对齐后的大小
但Debug模式下不行,编译器有时候改变函数的位置,有时候在中间加一些附加的东西,有没有控制编译器不要在某个地方产生附加数据的预处理语句啊?
能力值:
( LV3,RANK:20 )
5 楼
把ThreadFunc和AfterThreadFunc声明为static,要么关闭编译器的“增量连接(incremental linking)”。
ThreadFunc中的局部变量总大小必须小于4k字节。注意,当debug编译时,这4k中大约有10个字节会被事先占用。
这在代码注入是要注意的问题,一般声明为static就可以了。去掉编译器的/GZ编译选项。这个选项是默认的。
能力值:
( LV6,RANK:90 )
6 楼
谢谢,测试成功^_^
去掉“增量连接(incremental linking)”关闭链接器的:“代码和数据的填充”和“跳转 thunk ”
去掉/GZ关闭编译器对局部变量的一些初始化操作
但是不明白static在这里起什么作用?
能力值:
( LV2,RANK:10 )
7 楼
虚心学心中。
能力值:
( LV2,RANK:10 )
8 楼
最初由 getwin 发布 虚心学心中。