sh3llc0de开发测试中dumpbin的使用

如何处理动态语言(Python / JS)的“隐形”调用链? 本文揭示动态语言(Python/JS)中静态AST解析导致调用链“断链”的核心问题,提出通过运行时追踪补全图谱的解决方案。基于Code-Graph-RAG的cgr trace机制,分别利用pytest插件与V8 Profiler捕获真实调用路径,将动态边合并至静态图谱,并在权重体系中提升动态边优先级。实践表明,该方法可显著提升图谱覆盖率,实现“结构+行为”双视角理解代码,为MCP与Rerank系统提供可靠支持。 阅读详情

*[作者]:gz1X <gz1x(at)tom(dot)com>
*[来自]:中国黑客联盟

当然,基于MSF(Metasploit Framework)的shellcode开发简单的已经几乎用不着你自己去了解编程上的东西(细节请参考本人编写的MSF中文手册),但是对于初学而又喜欢探索底层的人来说,自己动手编程也是件不错的事情。嗯...本文面向像我一样在系统探索上的初学者,如果您是这方面的高手,这篇文章让您见笑了。

首先,了解一下dumpbin。
这个工具在微软的几乎所有的tool kits里都有,像VS,MASM...
在VS里没找到dumpbin?好吧,把路径切换到../WINDOWS/System32/,尝试以下命令:
link.exe /dump /headers /exports kernel32.dll >E:/log
记事本打开E盘下的log文件,看到了什么...实际效果和:
dumpbin /headers /exports kernel32.dll >E:/log
是一样的。

稍微解释一下dumpbin的参数.
把dumpbin放进一个环境变量指向的路径里(方便随时随地启动dumpbin),命令行输入dumpbin:

Microsoft (R) COFF Binary File Dumper Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

usage: DUMPBIN [options] [files]

  options:
    /ALL
    /ARCH
    /ARCHIVEMEMBERS
    /DEPENDENTS
    /DIRECTIVES
    /DISASM
    /EXPORTS
    /FPO
    /HEADERS
    /IMPORTS
    /LINENUMBERS
    /LINKERMEMBER[:{1|2}]
    /LOADCONFIG
    /OUT:filename
    /PDATA
    /RAWDATA[:{NONE|BYTES|SHORTS|LONGS}[,#]]
    /RELOCATIONS
    /SECTION:name
    /SUMMARY
    /SYMBOLS

挑我们需要的,/HEADERS,/EXPORTS,/OUT,其他的参数可以参考微软的MSDN,地址如下:
http://msdn2.microsoft.com/zh-cn/library/c1h23y6c(VS.80).aspx

/HEADERS显示文件头和每节的头,这里有个比较重要的信息就是文件在内存中的加载地址,也就是OPTIONAL HEADER VALUES里的Image Base;/EXPORTS显示从可执行文件或 DLL 导出的所有定义,这里我们需要的是函数的相对偏移地址;/OUT指定输出的 filename。默认情况下,DUMPBIN 将信息显示到标准输出(DOS窗口中),一般我不太喜欢用这个参数,我用管道>代替,而且如果是追加信息的话可以用>>。

然后,我们实际运用一把,随便到网上抓个shellcode,如下:


#include <stdio.h>

unsigned char beepsp[] =
"/x55/x89/xE5/x83/xEC/x18/xC7/x45/xFC"
"/x77/x7A/x83/x7C"               //Address /x77/x7A/x83/x7C = SP2
"/xC7/x44/x24/x04"
"/xD0/x03"                     //Length /xD0/x03 = 2000 (2 seconds)
"/x00/x00/xC7/x04/x24"
"/x01/x0E"                     //Frequency /x01/x0E = 3585
"/x00/x00/x8B/x45/xFC/xFF/xD0/xC9/xC3";

int main()
{
  void (*function)();
  *(long*)&function = (long)beepsp;
  function();
}  



这段代码我已经修改过了,在我的机器上运行是没问题的。用VC编译之后执行,会听到主板的“滴---”声,实际上是调用了kernel32.dll里的beep函数。
如代码中给出的:
"/x77/x7A/x83/x7C"               //Address /x77/x7A/x83/x7C = SP2
这个代码在XP SP2下才会正常执行,而且就算是SP2的系统,也会因为系统补丁导致类似kernel32.dll等这些系统dll在内存中的加载地址的不同,这样Address /x77/x7A/x83/x7C (实际上是7C837A77,注意小端排列)也就指向了错误的地方。

那么,怎么取得自己机器上的合理地址呢?
首先,用dumpbin取得dll的加载地址,比如要引用kernel32.dll中的beep函数,我们需要先得到kernel32.dll在本机内存中的加载地址,方法如下:

C:/Documents and Settings/Administrator>cd C:/WINDOWS/System32

C:/WINDOWS/system32>dumpbin /headers kernel32.dll > E:/log.txt

打开log.txt,找到如下信息:
OPTIONAL HEADER VALUES
              7C800000 image base
       
这里,7C800000就是kernel32.dll的本机加载地址。
知道了基址,我们就要查找beep函数在kernel32.dll内存映射的什么地方,方法如下:

C:/WINDOWS/system32>dumpbin /exports kernel32.dll >> E:/log.txt

我们在Dump of file kernel32.dll里查找函数beep:
    28   1B 00019805 BasepCheckWinSaferRestrictions
      29   1C 00037A77 Beep
      30   1D 0006FC7B BeginUpdateResourceA
其中,00037A77就是beep函数相对于基址的偏移地址,我们把两个地址相加,即得到beep函数在内存中的真实地址:
7C800000 + 00037A77 =7C837A77
以小端排列,得到:/x77/x7A/x83/x7C
这样在shellcode里修改:
"/x77/x7A/x83/x7C"               //Address /x77/x7A/x83/x7C = SP2
即可正常运行测试程序。

思路就这样简单,如果是kernel基址的通用获取,就需要其他技术了,超出本文范围,不做讨论。
Have Fun!

附:
1.kernel32.dll
C:/WINDOWS/system32>dumpbin /headers /exports kernel32.dll > E:/kernel_log.txt
2.ntdll.dll
C:/WINDOWS/system32>dumpbin /headers /exports ntdll.dll > E:/ntdll_log.txt
3.msvcrt.dll
C:/WINDOWS/system32>dumpbin /headers /exports msvcrt.dll > E:/msvcrt_log.txt
4.ws2_32.dll (网络编程)
C:/WINDOWS/system32>dumpbin /headers /exports ws2_32.dll > E:/ws2_log.txt 

数据科学助力大数据领域的航空安全分析 随着航空业的快速发展,航班数量不断增加,航空安全问题日益受到关注。大数据时代的到来,使得航空领域积累了大量的数据,包括飞行数据、维护数据、气象数据等。本文章的目的在于探讨如何运用数据科学的方法和技术,对这些大数据进行分析,以提高航空安全水平。范围涵盖了从数据收集、预处理到数据分析、模型构建和应用的整个流程。本文将按照以下结构进行组织:首先介绍数据科学和航空安全分析的核心概念以及它们之间的联系;接着阐述核心算法原理和具体操作步骤,并使用Python源代码进行详细说明; 阅读详情

相关推荐

利用腾讯云轻量服务器快速搭建网站CDN

腾讯云的轻量最近在主机和站长中间可谓是占尽来风头,优秀的线路,低廉的价格使得越来越多的人开始使用腾讯云的轻量级服务器来部署应用。由于腾讯云轻量服务器的海外服务器电信走的是CN2GIA线路带宽30m挺适合做CDN的,我就记录一下如何利用腾讯云香港的轻量服务器搭建一个CDN。 购买服务器 首先选购服务器,最近腾讯云在做活动,力度很大国内备案用户可以选用国内的服务器最低128元/年,未备案的可以选用香港或者新加坡的服务器。 购买链接 服务器系统选Debian、Ubuntu、centos都可以 一键脚

demo_top的博客 2566

CadInspector实战指南:CAD快速看图、测量批注与批量转换

CAD图纸查看是工程设计协作中的高频需求。面对动辄几十MB的DWG文件,传统CAD客户端启动慢、操作重,而轻量级查看工具通过优化渲染引擎与图层管理,实现快速打开、准确测量与批注。这类工具的核心价值在于将图纸浏览、标注、导出PDF等流程轻量化,并支持批量转换与API集成,帮助企业打通图纸分发、审图归档等业务链路。本文以CadInspector为例,围绕其部署安装、功能测试、命令行批量转换、REST接口调用及合规实践展开,帮助读者快速验证工具是否满足自身场景,并规避常见踩坑问题。

weixin_33938733的博客 486

RAG——RAG 索引(文档解析技术)

本文介绍了RAG系统中文档解析的关键技术,重点分析了如何通过LangChain的Document Loaders处理多种格式文档。文章指出高质量文档解析对RAG系统效果的决定性作用,并详细讲解了PDF、TXT、Word等常见格式的解析方法。作者提供了代码示例和Gitee开源项目链接,特别强调了PDF解析的深入方案,同时介绍了相关依赖库的安装配置。文章还展示了如何定义通用文档加载方法,为开发者提供了实用的技术参考。

小志的博客 754

linux arpspoof命令,Arpspoof的具体使用

比如我们要改百度的页面,哪么我们怎么做呢我们要先PING出百度的IP地址,然后在这个IP附近找同一个网段的服务器挨个入侵,就是通常说的C段,就会和百度在同一个交换机下了,然后使用我们提供的软件进行页面更改。看我的命令:arpspoof /i 列出网卡数,记下序号,arpspoof /n 生成一个JOB.txt 这是规则文本,你可以使用TYPE来查看,并在里面加上HACKER BY sh3llc0d...

weixin_39720003的博客 1321

DCM4CHEE Archive Light 应用配置-存储配置

本文介绍了在DICOM归档系统中配置和管理存储的方法,包括通过用户界面和LDAP导入两种方式。主要内容包括: 存储配置概述:用户可根据需求配置单个或多个存储设备,支持在磁盘空间不足或多任务并行时使用。存储分为Archive设备级(序列元数据存储)和Application Entity级(对象存储/元数据存储)。 用户界面操作: 设备级存储配置:通过菜单导航添加/编辑存储描述符,设置Storage ID、URI等关键参数 应用级存储引用:在设备扩展和网络AE中分别配置元数据和对象存储引用 LDAP配置方法:

洪城叮当的博客 1417

jemalloc实战:5分钟搞定C程序内存泄漏检测(附PDF报告生成技巧)

本文详细介绍了使用jemalloc的heap profiling功能快速检测C/C++程序内存泄漏的实战方法。通过预编译库和LD_PRELOAD注入,无需修改代码即可启动低开销剖析,并利用jeprof工具进行深度分析和生成可视化PDF报告,帮助开发者高效定位线上或开发环境中的内存问题。

i3j4k5的博客 227

XSS 绕过过滤器大全,

XSS 绕过过滤器大全, 收集、速查表、汇总 XSS Filter Evasion Cheat Sheet 介绍(Introduction): 翻译:落泪红尘 r00ts www.sh3llc0de.com 翻译了一点,有时间再全部翻译 https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Shee...

weixin_33737134的博客 5460

Transformer——从原理、模型架构到内部细节介绍

Transformer模型是一种基于注意力机制的深度学习模型,最早由Google在2017年的论文《AttentionIsAllYouNeed》中提出。自其问世以来就迅速席卷了自然语言处理他(NLP)领域,并在各类主流任务上取得了新的突破,包括机器翻译、语言建模、序列标注和文本分类等。在NLP领域取得巨大成功后,迅速扩展到了计算机视觉(CV)领域,并带来了革命性的变化。这种基于自注意力机制的深度学习模型,不仅在NLP任务中力压群雄,也成为CV领域的新宠。

小拉拉的博客 1万+

C#【必备技能篇】Win10 查看 DLL 中的函数

软件中存在着大量以 .dll 为扩展名的文件,这些文件就是动态链接库(Dynamic Link Library),简称为 DLL 。 DLL 可以使用不同的编程语言来编写,如 VB、C、C++、C# 等。 DLL 也可以被不同的编程语言调用,例如:可以使用 VB 调用 C 语言生成的 DLL 文件。确切的说是调用 DLL中的API函数。只要使用正确的调用格式,就可以直接调用不同语言写成的 DLL 中的函数。

星Yeah 的博客 1万+

中标麒麟,postgres报错invalid value for parameter "timeZone":"Asia/Beijing"

在中标麒麟服务器上,安装postgres,启动tomcat容器时,报invalid value for parameter "timeZone":"Asia/Beijing"。 查看postgres运行日志,也报同样的错误。 报错原因:服务器的时区,在Postgres支持的时区目录中找不到。当时在服务器上信息为Beijing 解决步骤: 1. cat /etc/sysconfig/cloc

u010213931的博客 7924

基于Simulink的四足机器人楼梯攀爬仿真模型

构建一个基于Simulink的四足机器人楼梯攀爬仿真模型,旨在模拟四足机器人在面对楼梯等障碍时的运动控制和稳定性调整。以下是一个详细的步骤指南,帮助你从零开始创建这样一个仿真模型。

xiaoheshang_123的博客 247

VSCode+golang 安装配置

安装Golang 1下载go安装程序 2配置gopath 安装vscode vscode配置 1配置vscode 2自动安装go工具包 3vscode自动安装失败执行手动安装 4安装包链接如下 安装vscode icons1.安装Golang1.1下载go安装程序 下载地址:https://www.golangtc.com/download go1.9.2是目前最新版,我选择此版本安装,如图: 下载

u013295518的博客 7万+

Ardupilot无人船(车)mavros自主控制

rover 4.4。

超维空间科技的博客 3231

How to Fix Signature Verification Failures Caused by Invalid PointerToRawData Field Values

转自:social.technet.microsoft.com Beginning with Windows Server 2008 and Windows Vista, there are components, such as the Windows Security Center, that will only execute code from a Portable Execut

lixiangminghate的专栏 706

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

DUMPBIN工具的使用

dumpbin.exe是微软二进制文件转储器。显示有关通用对象文件格式 (COFF) 的二进制文件的信息。 可以使用 DUMPBIN 检查 COFF 对象文件、 COFF 对象、 可执行文件和动态链接库 (Dll) 的标准库。 dumpbin.exe所在路径是 vs安装目录\VC\bin\dumpbin.exe。 我的电脑VS安装路径是E:\Visual Studio 2015 Ent\,所以dumpbin.exe的路径是E:\Visual Studio 2015 Ent\VC\bin\dumpbi.

顺其自然~专栏 3736

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

细数泄漏过的数据库,目前已知公开的!

先看看这张超长图吧,这里为大家提醒,一定要谨慎在网络中留下隐私信息!同时经常改密码。 补天漏洞响应平台的攻城狮和程序猿们花了很长时间,整理了这么一张灰常漂亮的图。这里整理的仅仅是已经被公开的部分,实际上地下有很多企业的大量数据库在流传,社工库已经强大到威胁到所有人的隐私信息,信息安全问题急需解决。 我们知道还遗漏了很多数据,欢迎大家给我...

dianmanggan5315的博客 1万+

IDEA的使用指南

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

KERNEL32.DLL中可供调用的API函数列表

KERNEL32.DLL中可供调用的API函数列表,如下: ActivateActCtx AddAtomA AddAtomW AddConsoleAliasA AddConsoleAliasW AddLocalAlternateComputerNameA AddLocalAlte

forpersonal 2万+

攻克SCENIC+服务器部署:从依赖地狱到成功运行的实战指南

本文详细解析了SCENIC+服务器部署过程中的常见问题及解决方案,特别针对Python包依赖管理和GitHub源码编译安装提供了实用技巧。通过分步拆解依赖包、优化环境配置和加速克隆等方法,帮助用户高效完成这一生物信息学工具的安装部署,避免陷入依赖地狱的困境。

weixin_30271335的博客 179

模型之外的那套装置:用 AI harness 完成一个三端同步应用

AI harness 指模型之外、让模型能持续产出可交付软件的全部工程装置。本文把它称作"支架"。它由五层构成:输入层规定模型读什么,反馈层规定模型怎么知道自己错了,观测层把界面与设备状态变成可读事实,记忆层让跨会话不失真,边界层规定哪些动作不许模型自行作出。支架的价值在六天里可以直接计量。

Leo的Matrix 182

附录一源码阅读路线与断点索引

本索引固定于Boot 3.5.7与Framework 6.2.12。先选择要解释的现象,再打开对应源码。表中观察对象是逻辑名称,不保证在所有重载中都是同名局部变量。抽象接口和注解用于阅读契约,不提供可执行方法体断点。

weixin_45476869的博客 164

软件测试用例模板怎么写:从用例设计到执行记录的全套指南

测试用例是测试工作的核心产出,它决定测试覆盖了多少、漏掉了什么。但大多数人的测试用例写得像流水账——只有正常路径,没有异常场景;只有操作步骤,没有预期结果;只有功能测试,没有非功能测试。本文拆解测试用例的标准结构,说明每个字段的含义和写法,给出覆盖功能测试、性能测试、安全测试的完整用例范例,并列出测试用例设计的五个高频遗漏点。

wuwangzhiduoshao的博客 154

MCP实战06:传输实战、测试与部署

你的 MCP Server 写完了,怎么确认它真的能被宿主正确调用?这课给传输层实战三件套:MCP Inspector 可视化调试、协议级自动化测试(pytest 断言 JSON-RPC 报文结构)、stdio/HTTP 双传输部署。测试不是可选项——工具描述错一个字段宿主就调不对,你能给 Server 建起自己的回归测试。

Blockbuster-drug 782

大型高复杂度互联网项目管理经验心得

复杂项目,管理的核心不是管人,而是管理依赖和变更简单项目重点是排任务、盯进度;多端多关联系统的大型项目,大部分延期、故障根源都来自依赖失控、变更失控。项目经理首要工作是把看不见的依赖显性化,把随意变更变成受控变更,而不是单纯催开发进度。分批上线不是降低标准,而是拆分风险,小步可控很多人觉得分批上线麻烦,希望攒到一起发布。但集中上线会把所有风险集中在同一个窗口,一旦出问题,排查范围巨大、影响面广。分批发布本质是风险隔离,每一批只承载有限的变更,出问题更容易定位、回滚、止损。

zyx980193917的博客 191

电芯串并联与BMS保护

串联升压、并联扩容,规则一句话,但整包能用多少由最弱的那节电芯说了算。这篇先算最弱电芯的账,再讲清三层保护,最后给对应的BMS测试用例:欠压、压差、均衡怎么测。BMS项目里有个常见场面:两台同配置的样车,电芯是同一批的,跑出来续航和限功率点却对不上。拆包量单体,一台里有一节电芯的容量比其他低了8%。整包表现被一节拖住,就是串并联的规矩在起作用。这篇先把规则和算例讲清,再讲保护分层,最后落到测试用例。

qq_43241255的博客 235

[LLM Wiki理论与实践-09]将OpenWiki融入Coding Agent为你节省Token

针对OpenWiki的整合则将Coding Agent的执行模式升级为**先读知识库、再精准修改代码**。OpenWiki预置概念文档、测试说明、页面清单与更新时间,让Agent快速理解业务意图、定位相关代码与测试、判断信息新旧,减少Token与时间开销,降低理解偏差和跨文件遗漏,使改动更一致、可复现,文档与代码同步维护。

JaydenAI的博客 432
上一篇: 有意思的后门...
下一篇: Shellcode 2 EXE
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值