社区
汇编语言
帖子详情
win32 汇编调用函数时的疑问?
TheNewIpad
2014-04-27 07:03:56
win32函数调用时,先跳转到一个全部时函数的位置,那地方全是一个个函数列表。 执行的操作是跳转到真正的函数执行体。
想知道这个位置是个啥!
...全文
95
5
打赏
收藏
win32 汇编调用函数时的疑问?
win32函数调用时,先跳转到一个全部时函数的位置,那地方全是一个个函数列表。 执行的操作是跳转到真正的函数执行体。 想知道这个位置是个啥!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zara
2014-04-30
打赏
举报
回复
同一模块里的,其实不是必须这样做的,也可以直接就到目的地,还省了一个指令。这样做的目的,连写那个很是有名的“Windows 程序设计大奥秘”的侯捷好像也是感到莫名;有些版本不是这么做的,我用 vc2008 没有特殊选项出来的就没有这个中间的 jmp 指令;或许是新版的针对函数的全面重新 hook 来的,好像 win7 里总是这样?
e379278011
2014-04-29
打赏
举报
回复
"那地方全是一个个函数列表" ,调用 函数,先要 声明, 数个函数的声明集合,组合一个inc的文件 TITLE Add and Subtract (AddSub.asm) ; This program adds and subtracts 32-bit integers. ; Last update: 2/1/02 INCLUDE Irvine32.inc ;<------- DumpRegs PROTO ; display register dump // 在Irvine32.inc 里声明滴。 Includelib Kernel32.lib ;<------- 添加 Includelib Irvine32.lib ;<------- 添加 .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h call DumpRegs ; / 在Irvine32.inc 里 声明滴。 exit main ENDP END main PE 结构 我没看过,所以我就先这么理解的: “ 那地方全是一个个函数列表。” 这个位置 我估计就是 加载Irvine32.inc 文件后, 指向 声明的函数的 实际地址。
TheNewIpad
2014-04-29
打赏
举报
回复
引用 2 楼 zara 的回复:
说的是其它模块里的函数吧,那个是 IMPORT 导入节里函数地址列表部分;详细的可以找份 PE 结构说明来看看。
我不知道我描述的是否正确, 现在只是在学习汇编。 举个例子吧比如我在main函数中调用 func1、func2、 func3 三个函数。 main函数的核心汇编如下 Func1(); 00BE1F9E call Func1 (0BE11E0h) Func2(); 00BE1FA3 call Func2 (0BE11D6h) Func3(); 00BE1FA8 call Func3 (0BE11DBh) 这0BE11E、0BE11D6、0BE11DB就是说我说的例子,在执行 到 00BE1F9E(调用FUnc1时), 跟进去就会发现全是函数跳转的地方。 你说它是导入表吧,感觉并不精确。 因为Func1这些函数没有导出、导入。 00BE1190 jmp UnhandledExceptionFilter (0BE357Eh) 00BE1195 jmp printf (0BE1486h) 00BE119A jmp _except_handler4_common (0BE337Ch) 00BE119F jmp _matherr (0BE2760h) 00BE11A4 jmp __getmainargs (0BE2976h) 00BE11A9 jmp lstrlenA (0BE3518h) 00BE11AE jmp _RTC_Failure (0BE1D00h) 00BE11B3 jmp _RTC_AllocaFailure (0BE2210h) 00BE11B8 jmp DebuggerKnownHandle (0BE1C20h) 00BE11BD jmp exit (0BE2AA4h) 00BE11C2 jmp __dllonexit (0BE336Ah) 00BE11C7 jmp FreeLibrary (0BE356Ch) 00BE11CC jmp _initterm_e (0BE2D32h) 00BE11D1 jmp _RTC_GetErrorFunc (0BE2610h) 00BE11D6 jmp Func2 (0BE1400h) 00BE11DB jmp Func3 (0BE1AA0h) 00BE11E0 jmp Func1 (0BE13B0h)
zara
2014-04-28
打赏
举报
回复
说的是其它模块里的函数吧,那个是 IMPORT 导入节里函数地址列表部分;详细的可以找份 PE 结构说明来看看。
fly 100%
2014-04-28
打赏
举报
回复
函数指针存放的表 可以这样理解么?
汇编
:调用
Win32
API
在32位
汇编
程序中使用
Win32
API 是很常见的,特别是在开发 Windows 应用程序
时
调用的频率很高,
Win32
API 提供了访问 Windows 操作系统功能的接口,包括窗口、消息处理、文件操作、网络通信等等。调用
Win32
API ...
win32
汇编
环境,函数的编写与调用、传值或返回值等
汇编
下函数的参数与调用等是最简单的,它的参数其实没有那么多指针、对象等复杂的概念分类,它只有8位、16位或32位的二进制值的理解。
Win32
汇编
中的函数调用约定
Win32
汇编
中的函数调用约定(子程序的参数传递和堆栈平衡) (1) 子程序的调用过程:调用者首先把参数压入堆栈,然后调用子程序,在完成后,由于堆栈中先前压入的参数不再有用,调用者或被调用者必须有一方把...
Win32
-API函数调用的约定
win32
api的函数调用方式是stdcall,其过程操作如下:
调用函数
的代码: 1.
调用函数
的逻辑代码 2.函数调用代码 a.将参数存入栈 (从右向左入栈) b.跳转 call 入口地址 push eip (压入返回地址,即函数...
VS中C语言调用外部
汇编
函数,C语言/C++调用
汇编
语言函数
C语言/C++调用
汇编
语言函数为设备驱动器和嵌入式系统编码的程序员常常需要把 C/C++ 模块与用
汇编
语言编写的专门代码集成起来。
汇编
语言特别适合于直接硬件访问、位映射,以及对寄存器和 CPU 状态标识进行底层访问。...
汇编语言
21,497
社区成员
41,618
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章