社区
汇编语言
帖子详情
win32 汇编调用函数时的疑问?
TheNewIpad
2014-04-27 07:03:56
win32函数调用时,先跳转到一个全部时函数的位置,那地方全是一个个函数列表。 执行的操作是跳转到真正的函数执行体。
想知道这个位置是个啥!
...全文
92
5
打赏
收藏
win32 汇编调用函数时的疑问?
win32函数调用时,先跳转到一个全部时函数的位置,那地方全是一个个函数列表。 执行的操作是跳转到真正的函数执行体。 想知道这个位置是个啥!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
汇编
中的函数调用约定
Win32
汇编
中的函数调用约定(子程序的参数传递和堆栈平衡) (1) 子程序的调用过程:调用者首先把参数压入堆栈,然后调用子程序,在完成后,由于堆栈中先前压入的参数不再有用,调用者或被调用者必须有一方把...
win32
汇编
调用c标准函数库
网上搜索了下没发现什么好方法,到aogosoft上下载了一个vc的库,打开libc.inc一看,有如下声明 ...MSVCRT.lib这个在radasm安装目录下有个vc目录下面有lib目录下面就有,为了调用方便可以把路径加入环境变量....
VS中C语言调用外部
汇编
函数,C语言/C++调用
汇编
语言函数
C语言/C++调用
汇编
语言函数为设备驱动器和嵌入式系统编码的程序员常常需要把 C/C++ 模块与用
汇编
语言编写的专门代码集成起来。
汇编
语言特别适合于直接硬件访问、位映射,以及对寄存器和 CPU 状态标识进行底层访问。...
win32
汇编
调用
win32
控制台API示例
2.asm; .386 .model flat, stdcall ...include S:\masm32\include\user32.inc include S:\masm32\include\kernel32.inc include S:\masm32\include\gdi32.inc includelib S:\masm32\lib\user32.lib includelib S
Win32
汇编
:常用系统API函数
熟练掌握
Win32
API函数的参数传递,是软件逆向的基础,本章节内容将使用MASM
汇编
器,逐个编译这些源程序,你可以通过使用一些调试工具,这里推荐OllyDBG来附加编译后的可执行文件,进行逐个分析,观察二进制程序逆向后的...
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章