上例中便是调用GetSystemMenu函数的

2023-11-09




有如下问题请教各位:

1.  为什么程序在调用window api或者dll中的输出函数时用的形式是
:00401375 FF1514324000            Call dword ptr [00403214]

上例中便是调用GetSystemMenu函数的.
我感到疑惑的是难道这个函数的入口地址每次在window启动时都放在内存00403214处吗?且我反编译后没有403214这个地方。

2.  静态反编译软件如w32dasm是如何根据这个地址知道了函数名字的?如下
* Reference To: USER32.GetSystemMenu, Ord:0145h
                                  |
:00401375 FF1514324000            Call dword ptr [00403214]
:0040137B 50                      push eax

3.  是不是Call dword ptr [XXXXXXXX] 只能用于系统的dll中的导出函数?

谢谢! 
 
回复时引用此帖 返回顶端

普通会员

资 料:
注册日期: Jul 2004
帖子:  99  rockhard 品行端正
精华:  4
现金: 205 Kx
致谢数: 0
获感谢文章数:0
获会员感谢数:0
2  旧 2005-10-19, 09:36:11  默认
rockhard 当前离线

自己想明白了, 

call dword prt [XXXXXXXX]

此处的XXXXXXXX就是FirstThunk (IMAGE_IMPORT_DESCRIPTOR 结构中的一个成员) 指向的IMAGE_THUNK_DATA 数组中的某个元素的值。此值在程序装入内存时由装载器将它替换成实际函数的地址。 

有如下问题请教各位:

1.  为什么程序在调用window api或者dll中的输出函数时用的形式是
:00401375 FF1514324000            Call dword ptr [00403214]

上例中便是调用GetSystemMenu函数的.
我感到疑惑的是难道这个函数的入口地址每次在window启动时都放在内存00403214处吗?且我反编译后没有403214这个地方。

2.  静态反编译软件如w32dasm是如何根据这个地址知道了函数名字的?如下
* Reference To: USER32.GetSystemMenu, Ord:0145h
                                  |
:00401375 FF1514324000            Call dword ptr [00403214]
:0040137B 50                      push eax

3.  是不是Call dword ptr [XXXXXXXX] 只能用于系统的dll中的导出函数?

谢谢! 
 
回复时引用此帖 返回顶端

普通会员

资 料:
注册日期: Jul 2004
帖子:  99  rockhard 品行端正
精华:  4
现金: 205 Kx
致谢数: 0
获感谢文章数:0
获会员感谢数:0
2  旧 2005-10-19, 09:36:11  默认
rockhard 当前离线

自己想明白了, 

call dword prt [XXXXXXXX]

此处的XXXXXXXX就是FirstThunk (IMAGE_IMPORT_DESCRIPTOR 结构中的一个成员) 指向的IMAGE_THUNK_DATA 数组中的某个元素的值。此值在程序装入内存时由装载器将它替换成实际函数的地址。 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上例中便是调用GetSystemMenu函数的 的相关文章

  • 汇编JMP语句 IP值和偏移量的问题。问题如下,我想知道IP值是怎么变化的。还有8086一条指令占个几字节啊

    汇编JMP语句 IP值和偏移量的问题 问题如下 我想知道IP值是怎么变化的 还有8086一条指令占个几字节啊 2011 10 16 22 26 干物虫子 分类 汇编语言 浏览404次 1 在0624单元内忧一条二字节JMP SHORT OB
  • Intel 80X86寄存器分类介绍

    开始读Linux内核相关书籍时 在书店里碰到一个计算机专业科班出身的朋友 向他请教时 他认为学习Linux内核不需要汇编和计算机体系结构等相关的知识 可是结合到现在的学习经历 我却越来越觉得为了搞清楚Linux内核相关设计和运行原理 自己那
  • ARM 64 协程切换上下文的汇编代码解读

    ARM 64协程切换上下文的汇编代码解读 贺志国 2023 8 11 在ARM 64位架构中 有一组通用寄存器 General Purpose Registers 一组浮点寄存器 Floating point Registers 和一组特殊
  • 汇编笔记

    更新于20190929 1 Intel和AT T汇编 参数是反的 AT T寄存器前加 常量前加 Intel mov rax rcx rcx gt rax mov cl 2 对应AT T movq rcx rax rcx gt rax mov
  • ARM下高效C编程

    通过一定的风格来编写 C 程序 可以帮助 C 编译器生成执行速度更快的 ARM 代码 下面就是一些与性能相关的关键点 1 对局部变量 函数参数和返回值要使用 signed 和 unsigned int 类型 这样可以避免类型转换 而且可高效
  • X64处理器架构

    X64处理器架构 翻译的windbg帮助文档 X64处理器架构 X64 架构是一个向后兼容的扩展的 x86 提供了和 x86 相同的 32 位模式和一个新的 64 位模式 术语 x64 包括 AMD 64 和 Intel64 他们的指令集基
  • 探讨STOS指令

    转载在http hi baidu com darks00n blog item 4c019ec42ad0cdcad00060b1 html 下面是一段win32 console程序 Debug版 的反汇编代码 很程式化的东西 本文不讨论这段
  • ARM 汇编基础知识

    1 为什么学习汇编 我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编 因为 Cortex A 芯片一 上电 SP 指针还没初始化 C 环境还没准备好 所以肯定不能运行 C 代码 必须先用汇编语言设置好 C 环境 比如
  • 汇编语言 第3版 王爽 检测点答案及详细解析

    第一章 基础知识 检测点1 1 1 1个CPU的寻址能力为8KB 那么它的地址总线的宽度为 13位 2 1KB的存储器有 1024 个存储单元 存储单元的编号从 0 到 1023 3 1KB的存储器可以存储 8192 2 13 个bit 1
  • 汇编——寄存器的分类和功能

    在汇编中 个人感觉最重要的部分其实就是寄存器了 这次我们了解一下寄存器的分类和功能 先说一下寄存器是什么吧 其实就是一部分的空间 我们可以使用这些空间来存储内容 寄存器的空间都是16位的 80x86中 后来有增长 也就是1个字的空间 堆栈则
  • ARM常用汇编指令

    目录 一 汇编基本语法 1 汇编指令的最典型书写模式 二 常用汇编指令 1 push压栈指令 2 pop出栈指令 3 sub指令 4 add指令 5 movs数据传输指令 6 str指令 7 ldr指令 8 bl指令 9 MOVW指令 10
  • Base64编码(汇编版,未做过多优化,性能自认为还可以)

    感谢 DelphiGuy 于 2010 10 08 17 27 37 给出的提醒 function GetSizeCoder3To4 InputCount Integer Integer inline begin Result InputC
  • asm:常用语法

    常用语法 1 循环 1 1 使用条件跳转指令实现循环 1 2 使用LOOP指令实现循环 2 字符串 2 1 指定字符串的长度 2 2 字符串指令 2 3 重复前缀 3 数组 4 递归 5 宏 6 文件操作 7 内存管理 1 循环 1 1 使
  • ARM汇编快速入门

    本文主要分享如何快速上手ARM汇编开发的经验 汇编开发中常见的Bug以及Debug方法 用的Convolution Dephtwise算子的汇编实现相对于C 版本的加速效果三方面内容 前言 神经网络模型能够在移动端实现快速推理离不开高性能算
  • 常见汇编指令整理

    本文会整理在逆向中常见的指令汇总 目录 汇编符号 汇编指令的组成 mov movzx lea xchg 加法指令 减法指令 带进位加法 带进位减法 自增自减 乘法运算 除法运算 and or xor not shl shr 逻辑指令 字符串
  • MCS-51 汇编指令集(J开头的指令)

    MCS 51系列单片机指令以J开头的指令有8条 分别为 JB bit rel JBC bit rel JC rel JMP A DPTR JNB bit rel JNC rel JNZ rel JZ rel 1 JB bit rel 指令名
  • 程序员的自我修养——链接、装载与库

    1 温故而知新 操作系统概念 北桥 连接高速芯片 系统调用接口 以软件中断的方式提供 如Linux使用0x80号中断作为系统调用接口 多任务系统 进程隔离 设备驱动 直接使用物理内存的弊端 地址空间不隔离 内存使用效率低 程序运行的地址不确
  • C语言深入学习--checklist4:宏、枚举、switch

    宏 1 宏的本质是什么 函数 语句 类型定义 或者其它 预编译器的文本替换 1 你知道语言设计者为什么设计宏吗 这些原因目前是否成立 在 C程序中 可以用宏代码提高执行效率 宏代码本身不是函数 但使用起来象函数 预处理器用复制宏代码的方式代
  • [原创]C++98升级到C++20的复习旅途-从汇编及逆向角度去分析“constexpr“关键字

    简介 常用网名 猪头三 出生日期 1981 XX XX QQ 643439947 个人网站 80x86汇编小站 https www x86asm org 编程生涯 2001年 至今 共22年 职业生涯 20年 开发语言 C C 80x86A
  • DOSBOX 快捷键及 MS-DOS 命令

    1 全屏 退出全屏 alt enter 2 释放鼠标 ctrl F10 3 exit 退出DOSBOX 4 dir 显示目录内容 可选参数 w 只显示文件名 P 显示部分内容 exe 筛选出可执行文件 5 cd 进入目录 cd 退回上一级目

随机推荐

  • 根据这些超参数构建Transformer模型。

    对不起 您需要提供更多信息 以便构建Transformer模型 您需要提供超参数的详细列表 以便构建模型 您可以提供以下超参数以构建Transformer模型 模型大小 例如 隐藏层的大小 头的数量 编码器和解码器层的数量 门控循环单元 G
  • 左值和右值

    左值引用 也就是 常规引用 不能绑定到要转换的表达式 字面常量 或返回右值的表达式 而右值引用恰好相反 可以绑定到这类表达式 但不能绑定到一个左值上 右值引用就是必须绑定到右值的引用 通过 获得 右值引用只能绑定到一个将要销毁的对象上 因此
  • mybatis-plus复杂条件查询

    针对 mybatisplus 的复杂条件 需要将条件封装到 QueryWrapper 和 UpdateWrapper 对象中 1 QueryWrapper 查询 删除条件封装 QueryWrapper 对象用于封装查询 删除条件 2 Upd
  • oracle数据库时分秒格式_Oracle如何输出指定格式的日期时间数据呢?

    摘要 下文讲述Oracle数据库输出指定的日期时间格式的方法分享 如下所示 实现思路 使用TO CHAR系统函数 指定输出格式为 即可将日期时间转换为指定格式的字符串 如 SELECT TO CHAR SYSDATE YYYY MM DD
  • 学生信息管理系统(C语言)

    高级程序设计 学生管理系统 C语言 本项目可以简单的实现学生信息的增 删 改 查 统计 存储等基本功能 环境是Dev C 创建学生信息文件 根据提示输入学生的各项信息 然后按学号对学生信息进行排序 并将排序后的学生信息存储到文件中 增加学生
  • 网络nan的原因_深度学习网络训练中出现nan的原因分析

    nan Not a Number 错误后果 造成训练准确率的断崖式下跌 两种出现地点 1 在loss函数中出现nan 出现原因 一般是因为tf中的log函数输入了 负数 或 0 值 出现log 0 0的情况 解决方法 使用tf clip b
  • MQTT

    MQTT 菜鸟资料收集 https blog csdn net bangdingshouji article details 52576110 https github com menudoproblema libemqtt https b
  • 使用exceljs导出excel表格

    背景 最近在使用electon写一个桌面程序 需要对数据进行excel导出操作 这里选择使用 exceljs 来完成这个功能 下面是exceljs导出功能的简单实现 功能实现 下载 exceljs yarn add exceljs 引入 e
  • 【Mysql】使用语句插入数据的方法

    mysql中常用的三种插入数据的语句 insert into表示插入数据 数据库会检查主键 如果出现重复会报错 replace into表示插入替换数据 需求表中有PrimaryKey 或者unique索引 如果数据库已经存在数据 则用新数
  • 【故障诊断】基于 KPCA 进行降维、故障检测和故障诊断研究(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 主要特点
  • Mongodb的安装部署

    Mongodb的安装部署 一 环境介绍 二 配置mongodb的yum源 三 安装mongodb 三 启动mongodb 1 mongodb启动 2 查看mongodb的状态 3 查看监听端口 四 进入mongodb 五 查看mongodb
  • 有关html,css的实用知识总结(二)

    1 CSS 选择符有哪些 哪些属性可以继承 优先级算法如何计算 1 id 选择器 myid 2 类选择器 myclassname 3 标签选择器 div h1 p 4 相邻选择器 h1 p 5 子选择器 ul lt li 6 后代选择器 l
  • H5 PCM转WAV实时音频直播代码实现细节

    一 前端实现 H5数据采集 web audio的概念和使用详见 接口文档 采集音频数据 var context new AudioContext var audioInput context createMediaStreamSource
  • mysql 强制使用索引和强制不使用索引

    前一段面试时问过这个问题 当时不太懂 今天刚好看到这一块的内容就梳理下 首先说个概念 SQL提示 就是在sql中加入我自己的提示来达到我想要的效果 关于索引有三种sql提示 use index index name 希望mysql参考的索引
  • 手把手教你SQLite在Windows/VS下的安装配置及使用(超详细,不会你怪我)

    目录 一 系统环境 二 下载 三 配置系统环境 四 使用命令win r 输入cmd命令 一 系统环境 我这里用的是 Win10 64Bit VS2015 不同版本相差不大 其版本也可以参考这个安装教程 二 下载 SQLite的官网下载地址
  • 【Ubuntu】格式化U盘

    要格式化 U 盘 你可以使用以下命令来执行 请注意 执行此命令将删除 U 盘上的所有数据 请确保在执行命令之前备份重要文件 在 Linux 上 使用 mkfs 命令格式化 U 盘的步骤如下 打开终端应用程序 确定 U 盘的设备名称 运行以下
  • keyshot分辨率多少合适_keyshot电脑配置浅谈

    以下说明均以官方keyshot7 3 4以上版本为例 我们先看一下keyshot官方给出的安装所需的基本电脑配置需求 官方注释 KeyShot将利用所有可用的CPU内核 因此 更多的CPU核心 线程将产生更快的渲染时间 虽然KeyShot不
  • RabbitMQ初级教程,基础知识

    RabbitMQ学习笔记 RabbitMQ 1 初识MQ 1 1 同步和异步通讯 1 1 1 同步通讯 1 1 2 异步通讯 1 2 技术对比 2 快速入门 2 1 安装RabbitMQ 2 2 RabbitMQ消息模型 2 3 导入Dem
  • linux系统小白入门基础(含常用基本命令)

    Linux概述 简要介绍 Linux内核最初只是由芬兰人李纳斯 托瓦兹 Linus Torvalds 在赫尔辛基大学上学时出于个人爱好而编写的 Linux是一套免费使用和自由传播的类Unix操作系统 是一个基于POSIX和UNIX的多用户
  • 上例中便是调用GetSystemMenu函数的

    有如下问题请教各位 1 为什么程序在调用window api或者dll中的输出函数时用的形式是 00401375 FF1514324000 Call dword ptr 004