ucantseeme 发表于 2010-7-28 06:12:03

VS2005里面有没有取函数首尾地址的宏,或者其他方法也行

比如汇编里面有个

CODE_START    equ   this   byte

首尾加一个,然后相减取取函数长

vs里面有没有类似的方法

bianfeng 发表于 2010-7-28 06:12:04

本帖最后由 bianfeng 于 2010-7-28 07:51 编辑

取尾地址用内联汇编自定位看看吧
int End;
int Start;
__asm
{
    call $+5
    pop  
    add  ,5       究竟是+5还是加多少取决于add  ,5指令的长度
}

XXXXX
XXXXX
XXXXX
__asm
{
    call $+5
    pop  
    sub  ,5
}

只适用于函数内,最笨的方法,呵呵。

ucantseeme 发表于 2010-7-28 08:05:19

你说这方法跟我前天晚上睡觉时候想得一模一样

发帖的时候忘说还有没有其他的

iawenll 发表于 2010-7-28 11:50:47

首地址应该很直接吧,直接用函数名啊
尾地址要用其他方法了

ucantseeme 发表于 2010-7-28 15:48:48

结帖了,一楼的是个方法就结给他吧

bianfeng 发表于 2010-7-30 07:57:16

刚发出去悬赏80UB,现在在终于收回点成本了:lol

zyyuser 发表于 2010-8-7 22:48:47

取函数尾地址有什么用呢?
我觉得,相对来说首地址很明确,就是函数被Call的地址(函数名、函数入口),但是尾地址就不明确了,高级语言里,除非这个函数的是顺序执行的,没有任何分支或循环,否则这个函数的最后一条语句在编译成机器指令后其所在的地址却未必是这个函数体的最高地址,而如果以这个函数出口指令作为函数结束标志也不成,因为一个函数可以有多条Ret指令的。

download2010 发表于 2010-8-8 08:07:28

取函数尾地址有什么用呢?
我觉得,相对来说首地址很明确,就是函数被Call的地址(函数名、函数入口),但 ...
zyyuser 发表于 2010-8-7 22:48 http://www.unpack.cn/images/common/back.gif


    把整个函数取出,加密或清除,或者猥琐,虚拟化

tmbs 发表于 2010-8-15 15:53:00

学习了。我是新人
页: [1]
查看完整版本: VS2005里面有没有取函数首尾地址的宏,或者其他方法也行