首页
论坛
课程
招聘
在VC下怎样获得函数大小
2006-3-14 20:53 7816

在VC下怎样获得函数大小

2006-3-14 20:53
7816
在VC下怎么获得函数的大小啊?

问题太菜,别扔砖啊~~,在Google上搜了半天搜不着

[注意] 欢迎加入看雪团队!base上海,招聘CTF安全工程师,将兴趣和工作融合在一起!看雪20年安全圈的口碑,助你快速成长!

收藏
点赞0
打赏
分享
最新回复 (7)
雪    币: 1613
活跃值: 活跃值 (33)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
北极星2003 活跃值 25 2006-3-14 22:03
2
0
最初由 天涯浪人 发布
在VC下怎么获得函数的大小啊?


函数大小??
是不是文件大小?
DWORD GetFileSize(
  HANDLE hFile,  // handle of file to get size of
  LPDWORD lpFileSizeHigh  // pointer to high-order word for file size
);
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
天涯浪人 活跃值 2 2006-3-14 22:54
3
0
我想用VirtualAllocEx(),CreateRemoteThread()
VirtualAllocEx()中的dwSize怎么确定啊?

在汇编下能用SIZEOFPROC EQU $-PROCNAME,在VC下有什么伪指令可以实现同样的效果啊?
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
天涯浪人 活跃值 2 2006-3-15 08:00
4
0
我试了一下:
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{}
void end(){}
(UINT)uProcSize=(UINT)end-(UINT)ThreadProc;
在Release模式下可以得到ThreadProc()对齐后的大小
但Debug模式下不行,编译器有时候改变函数的位置,有时候在中间加一些附加的东西,有没有控制编译器不要在某个地方产生附加数据的预处理语句啊?
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
fengercn 活跃值 2006-3-15 10:10
5
0
把ThreadFunc和AfterThreadFunc声明为static,要么关闭编译器的“增量连接(incremental linking)”。
ThreadFunc中的局部变量总大小必须小于4k字节。注意,当debug编译时,这4k中大约有10个字节会被事先占用。

这在代码注入是要注意的问题,一般声明为static就可以了。去掉编译器的/GZ编译选项。这个选项是默认的。
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
天涯浪人 活跃值 2 2006-3-15 11:34
6
0
谢谢,测试成功^_^

去掉“增量连接(incremental linking)”关闭链接器的:“代码和数据的填充”和“跳转 thunk ”

去掉/GZ关闭编译器对局部变量的一些初始化操作

但是不明白static在这里起什么作用?
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
getwin 活跃值 2006-3-16 11:57
7
0
虚心学心中。
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chinawash 活跃值 2006-3-17 17:17
8
0
最初由 getwin 发布
虚心学心中。
游客
登录 | 注册 方可回帖
返回