首页
社区
课程
招聘
[求助]获取函数体长度的方法
发表于: 2011-3-27 12:44 7348

[求助]获取函数体长度的方法

2011-3-27 12:44
7348
在汇编开发环境下,可以很容易的获得函数体的长度。。Append_Code_Start equ this byte
......
Append_Code_End equ this byte  然后两者相减就能得到了。。。但是在vc内联汇编中应该怎么得到函数体的长度呀。。貌似内联汇编不支持equ this等指令。。求解。。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1149
活跃值: (888)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
2
Start:

End:
mov  eax,offset End
mov  ebx,offset Start
sub eax,ebx
2011-3-27 12:47
0
雪    币: 836
活跃值: (2807)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
3
可用,谢谢了
2011-3-27 13:03
0
雪    币: 1085
活跃值: (114)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
4
mark 一下
2011-4-6 09:16
0
雪    币: 1085
活跃值: (114)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
我现在有这样一个疑问:

  在函数内部获得函数体自身的长度可以使用如上方法,但如何在函数外部获得函数体的长度啊?

函数内部情况
int fun( int a )
{
Start:
int bb = a;   //bb为函数体的长度
bb += 3;
_asm{
  mov eax, offset End
  mov  ebx, offset Start
  sub eax, ebx
  mov bb, eax
}
return bb;
End:
;
}

函数外部情况:
int Fun( int a )
{
    int b =a;
    b += 3;
    return b;
}

int main()
{
     如果想在这里(函数外部)获得函数体长度,该如何实现啊?
}
2011-4-7 09:26
0
雪    币: 272
活跃值: (143)
能力值: ( LV15,RANK:930 )
在线值:
发帖
回帖
粉丝
6
对于自己的函数。。

自己反汇编测长度

或上下定义函数,标准可以使用 linker 的特性。。

#pragma code_seg(".text$ldrB") // ldr body
void fun()
{
}

#pragma code_seg(".text$ldrA") // loader header
static void fun_BEGIN() {}

#pragma code_seg(".text$ldrZ")
static void fun_END() {}

#pragma code_seg()
2011-4-7 11:05
0
雪    币: 225
活跃值: (173)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有一个反汇编引擎,可以取得函数长度,开源的,可以找找
2011-4-27 09:18
0
游客
登录 | 注册 方可回帖
返回
//