hash扫描获得api函数地址学习笔记

【C语言】算法学习·哈希算法全解 c语言哈希算法 阅读详情

原文:http://www.pediy.com/kssd/index.html -- 病毒技术 -- 病毒知识 -- Anti Virus专题

搜索获得api函数地址的实现

我们的程序能正常的调用函数。那么这个动态链接库是如何输出函数来供我们的用户程序调用呢?它实际上是采用输出表结构来描述本dll需要导出哪些函数来供其他的程序调用,这样其他的用户程序才能正常的调用此动态链接库的输出函数.

导出表结构:

IMAGE_EXPORT_DIRECTORY struct
Characteristics		DWORD	?	; 未使用,总是为0
TimeDateStamp		DWORD 	?	; 文件的产生时刻
MajorVersion		WORD	?	; 未使用,总是为0
MinorVersion		WORD	?	; 未使用,总是为0
nName			DWORD	?	; 指向文件名的RVA
nBase			DWORD 	? 	; 导出函数的起始序号
NumberOfFunctions	DWORD	?	; 导出函数的总数
NumberOfNames		DWORD 	?	; 以名称导出的函数总数
AddressOfFunctions	DWORD	?	; 指向导出函数地址表的RVA
AddressOfNames		DWORD 	?	; 指向函数名地址表的RVA
AddressOfNameOrdinals	DWORD	?	; 指向函数名序号表的RVA
IMAGE_EXPORT_DIRECTORY ends
在这里说下AddressOfFunctions、AddressOfNames和AddressOfNameOrdinals这三个成员的对应关系,比如说我们通过名称搜索MessageBoxA函数的地址, AddressOfNames的值是一个RVA数组,每个RVA加上模块基址就是实际的函数名称字符串地址,如果说MessageBoxA这个字符串在这个数组的索引位置0处, 而AddressOfNames和AddressOfNameOrdinals是对应的,用”MessageBoxA“字符串在AddressOfNames中的索引在AddressOfNameOrdinals指向的函数名序号表中取值,取出的序号值再用在AddressOfFunctions中用来取值,取得的RVA加上模块基址就是MessageBoxA函数的地址了。



下面的代码用来测试获取MessageBoxA函数的地址并调用

    .386  
    .model flat, stdcall  
    option casemap:none  
  
include windows.inc  
include user32.inc  
include kernel32.inc  
includelib user32.lib  
includelib kernel32.lib  
  
    .const  
szDllName   db 'user32.dll', 0  
szApiString db 'MessageBoxA', 0  
szText      db 'Get API Address Success!', 0  
szCaption   db 'Success', 0  
  
    .code  
_GetApiAddress proc _hDllHandle, _lpApiString  
      
    push ebp  
    mov eax, _hDllHandle    	; hModule  
    mov ecx, _lpApiString   	; lpApiString  
    mov ebx, eax        	; ebx = hModule  
    mov edi, ecx        	; edi = lpApiString  
    xor al, al  
;>>>>>>
从零构建Python漏洞扫描器:DAST技术与哈希算法的实战融合 本文详细介绍了如何从零构建Python漏洞扫描器,结合DAST动态测试技术与哈希算法,提升对业务逻辑漏洞和哈希混淆payload的检测能力。通过实战案例展示了扫描器在电商支付接口和优惠券系统中的应用,涵盖智能爬虫、动态测试引擎、哈希算法创新应用等核心模块,帮助开发者打造高效、精准的安全检测工具。 阅读详情

相关推荐

快速查找API函数的HASH 值

在漏洞利用,编写机器码时通过先将API函数hash之后来快速定位函数的绝对地址

API地址专家 一个很实用的查找api地址的小工具

一个很实用的查找api地址的小工具,程序员必备

Dev C++调试程序方法详解

Dev C++调试程序方法详解

weixin_70641798的博客 1万+

单细胞分析R包monocle3服务器安装教程

由于centos7系统yum只能安装到低版本gdal,而monocle3依赖包需要 gdal>2 版本,从gdal官网下载2.4.4版本编译安装。monocle3的安装是通过cole-trapnell-lab安装的,该包挂在github上,需要通过github先安装leidenbase包,需要提前安装devtools包下载工具。接着利用BiocManager安装相应的依赖包,由于这些包的特殊性,所以不要切换到国内Bio_Mirror镜像,否则会找不到,如果一次不成功,缺啥补啥即可。运行 ldconfig。

qq_36608036的博客 1万+

《Halcon 100项目-9》Halcon彩色线序检查

Halcon彩色线序检查

doubleintfloat的博客 1043

【亲测有效】OpenClaw Gateway 出现 “(no output)“ 卡死问题完整解决指南:从手动重启到 systemd Watchdog 自动恢复

最近在使用 OpenClaw(自托管 AI 助手框架,前身 Clawdbot/Moltbot)时,遇到了一个非常常见的顽疾:TUI(终端界面)或 Telegram 等通道经常显示 "(no output)",消息发出去后机器人完全没反应,看起来像是卡死了。

hampeter的博客 8609

【STM32H7实战】SDMMC总线优化与FatFs文件系统高效读写技巧

本文详细介绍了STM32H7中SDMMC总线优化与FatFs文件系统高效读写技巧,包括时钟配置、DMA传输、缓存策略等关键优化点。通过实测数据对比,展示了从2.7MB/s提升至11.8MB/s读取速度的优化效果,适用于需要高性能SD卡读写的嵌入式开发场景。

e6f7g8h9i的博客 483

基于AI的智能开发环境—Trae在Web开发中的应用实战与性能评估【Trae项目实战】

Trae 是一款与 AI 深度集成的开发工具,提供智能问答、代码自动补全和基于 Agent 的 AI 自动编程能力,极大提升开发效率。它具备完备的 IDE 功能,如代码编写、项目管理和源代码管理等,同时还具备强大的 AI 助手,能够提供智能问答、实时代码建议、代码片段生成等服务。开发者可以通过自然语言与 AI 协作,从 0 到 1 开发项目,AI 会根据需求自动生成代码或创建文件。

一键难忘的博客 3万+

华为OD机试双机位C卷-字符串解密(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【字符串解密】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 字符串解密。

qq_45776114的博客 734

DataCastle-租金预测

ID:编号;时间:房屋信息采集的时间;小区名:房屋所在小区,已脱敏处理;小区房屋出租数量:小区出租房屋数量,已脱敏处理;楼层:0、1、2分别表示楼层低,中,高;总层数:房屋所在建筑的总楼层数,已脱敏处理;房屋面积:房屋面积数值,已脱敏处理;房屋朝向:房屋的朝向;居住状态:房屋的居住状态,表示是否已出租或居住中,已脱敏处理;卧室数量:户型信息,数字表示卧室的个数;卫的数量:户型信息,数字表示卫生间的个数;厅的数量:户型信息,数字表示厅的个数;

优快云 精品推荐 3457

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: kernel32基地址获得学习笔记
下一篇: PE结构、SEH相关知识学习笔记
ProgrammingRing
博客等级 码龄17年 76粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值