UpK软件安全社区's Archiver

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

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

比如汇编里面有个
'g.U?.\X v9T
Z%mV.gZ%\iG CODE_START    equ   this   byte
3F Q'G1PUw _`)i WbJS Po"p d xlzS"AB
首尾加一个,然后相减取取函数长
ws3z!g8u7AQ c0R9c
B%[] XvDgJ3l"T vs里面有没有类似的方法

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

[i=s] 本帖最后由 bianfeng 于 2010-7-28 07:51 编辑 [/i] ?!v4m7dI

3Uh7AKq VE 取尾地址用内联汇编自定位看看吧\[1J5qU
int End;
Q'?0w9~!L:K @;S int Start;!bn},`:_-r&?
__asm8pWj G*mr#`3a$c
{zIL-Q&v6Z
    call $+5 p&\-mwS'G)Q'}#M.kv
    pop  [Start]
d F)do] c     add  [Start],5       究竟是+5还是加多少取决于add  [Start],5指令的长度[!i&uK;V$B
}$i,q!p1u2k^|g-p)T
!CGx]Y&Q
XXXXX;x0ou2NA&aJd(D
XXXXX
lO-U6@P9K J^ XXXXXL^^3B5SN
__asm/z'n)D^Qr/q.W6TD
{,Oe,f*C lw#|
    call $+5]$yi$DF_ q6CN
    pop  [End]
B]O.K#Yv[| f     sub  [End],5-z!W]O^4H0I
}
(Cgb;{P;S,`.y
SSttSk,U4^ q 只适用于函数内,最笨的方法,呵呵。

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

你说这方法跟我前天晚上睡觉时候想得一模一样L-@;n@H*yU

`f;u9]*Y5F 发帖的时候忘说还有没有其他的

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

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

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

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

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

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

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

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

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

[quote]取函数尾地址有什么用呢?!~dP$G-DLf
我觉得,相对来说首地址很明确,就是函数被Call的地址(函数名、函数入口),但 ...zW6S(Ap;HS)s!v t
[size=2][color=#999999]zyyuser 发表于 2010-8-7 22:48[/color] [url=http://www.unpack.cn/redirect.php?goto=findpost&pid=756189&ptid=53506][img]http://www.unpack.cn/images/common/back.gif[/img][/url][/size][/quote]G X _8jRY

`j4|(u"QtW e]6TF!DM5P t?I
    把整个函数取出,加密或清除,或者猥琐,虚拟化

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

学习了。我是新人

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.