社区
汇编语言
帖子详情
jmp到函数的问题,麻烦熟悉的兄弟给解释下,多谢
rageliu
2008-03-11 11:19:47
我用vc写了一个函数,void Test();假设Test函数开始地址为0x12345678
然后在其他地方使用汇编跳转 jmp Test.
我本来以为最终会是jmp 0x12345678,这样直接跳到函数头。但调试发现是首先jmp 0x12340000,然后在0x12340000处才是指令jmp 0x12345678。
为什么会是2次跳转,怎么才可以直接一次jmp到目标指令呢
...全文
145
10
打赏
收藏
jmp到函数的问题,麻烦熟悉的兄弟给解释下,多谢
我用vc写了一个函数,void Test();假设Test函数开始地址为0x12345678 然后在其他地方使用汇编跳转 jmp Test. 我本来以为最终会是jmp 0x12345678,这样直接跳到函数头。但调试发现是首先jmp 0x12340000,然后在0x12340000处才是指令jmp 0x12345678。 为什么会是2次跳转,怎么才可以直接一次jmp到目标指令呢
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ttlyfast
2008-03-16
打赏
举报
回复
jmp jmp
rageliu
2008-03-16
打赏
举报
回复
各位,我用release编译,还是有2次jmp
大熊猫侯佩
2008-03-15
打赏
举报
回复
编译器自身的实现不同,从汇编角度看皆可。
alan001
2008-03-15
打赏
举报
回复
学习
UP
homesos
2008-03-15
打赏
举报
回复
用纯汇编写就行了,写一个ASM文件,用VC写,还要看编译器,不同的编译器,不同的编译选项,不同的编译类型都是不尽相同的。
zhoujianhei
2008-03-14
打赏
举报
回复
使用
__declspec (naked)
声明函数
rageliu
2008-03-14
打赏
举报
回复
谢谢楼上,这个只是没有push ebp,mov ebp ,esp等一般的函数入口形式代码而已啊,和jmp没关系吧
rageliu
2008-03-11
打赏
举报
回复
哦,感谢,
cnzdgs
2008-03-11
打赏
举报
回复
用Debug版编译就是这样,用Release编译就不会多jmp了。
智能卡_Snooper
2008-03-11
打赏
举报
回复
http://www.qqgb.com/Program/VC/VCJQ/Program_174978.html
相关推荐
Linux下替换memset
函数
Linux下替换memset为自己写的
函数
,但是用
jmp
绝对跳转时会遇到段错误的
问题
汇编达人视频学习6(汇编眼中的
函数
、CALL指令执行
函数
、堆栈传参、堆栈平衡、外平栈、内平栈)
title: 汇编达人视频学习6 date: 2021年8月4日 15点15分 tags: 汇编达人 categories: 汇编达人 21、汇编眼中的
函数
1、什么是
函数
函数
就是一系列指令的集合,为了完成某个会重复使用的特定功能。(汇编语言中对
函数
的
解释
,不是其他语言的
解释
) 例子:向寄存器中赋值 2、如何执行一个
函数
?即
函数
调用 1、用
JMP
来执行
函数
2、用CALL来执行
函数
但是用
JMP
调用的时候,有一个
问题
就是,调用完了之后,回不去了。所以通常不用
JMP
来调用 而是选择用CALL来调用,有什么.
linux下内联
函数
实现浅析
首先我们来看看内联
函数
的相关
解释
: 1.引入目的:为了解决程序中
函数
调用的效率
问题
2. 优点:节省了
函数
调用时间,也就是说没有call指令(也就没有相关参数的压栈(push),跳转(
jmp
),返回(ret), 参数出栈(add $0x10,%esp)等等一系类的操作,可谓是节省了不少功夫),以空间换时间. 3. 缺点:在调用出的代码量会增加很多。在编译器没有将相关
函数
处理成内联
函数
时(为
C语言中如何实现同一项目中的快速跳转——goto语句与
jmp
语句的使用
C语言中如何实现同一项目中的快速跳转goto语句与
jmp
语句goto语句与
jmp
语句的相同点goto语句与
jmp
语句的不同点(附使用方法)goto语句只能够实现同一
函数
下的跳转
jmp
语句能够实现不同
函数
间的跳转而事实上,
jmp
语句还拥有更加强大的功能:能够实现同一项目中不同源文件间的跳转除此之外(
问题
)有关extern的使用有关long
jmp
的使用 goto语句与
jmp
语句 goto语句与
jmp
语句的相同点 两者都能够实现快速跳转,而事实上,尽管这种快速跳转极可能导致语句逻辑混乱,既不容易理解,也不方便调试
(五)CALL、
JMP
与RET
JMP
: 复制地址到EIP
jmp
0x111111 //就是修改EIP ,(EIP就是CPU下一行要执行的语句地址,这个地址也可以是数据区段,然后把数据解析为代码,漏洞就是利用了这点) CALL:顾名思义就是调用, push下一行语句地址到栈顶,然后将地址存入EIP,进入
函数
,然后ret返回到调用call的下一行 call无非就是 将下一行语句 地址push到栈顶,然后
jmp
到
函数
...
发帖
汇编语言
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
2.1w+
社区成员
4.1w+
社区内容
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2008-03-11 11:19
社区公告
暂无公告