动态调用API方法PEB方法

shellcode编写探究 shellcode是不依赖环境,放到任何地方都可以执行的机器码。shellcode的应用场景很多,本文不研究shellcode的具体应用,而只是研究编写一个shellcode需要掌握哪些知识。 阅读详情

Rhett的代码
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>

int main(int argc, char* argv[])
{    
    _asm
    {
        mov         eax,fs:30h
        mov         eax,[eax+0Ch]
        mov         esi,[eax+1Ch]
        lodsd
        mov         ebp,[eax+8]

        mov         eax,[ebp+3Ch]
        mov         edx,[ebp+eax+78h]
        add         edx,ebp
        mov         ecx,[edx+18h]
        mov         ebx,[edx+20h]
        add         ebx,ebp
search:
        dec         ecx
        mov         esi,[ebx+ecx*4]
        add         esi,ebp

        mov         eax,0x64616F4C
        cmp         [esi],eax
        jne         search
        mov         eax,0x7262694C
        cmp         [esi+4],eax
        jne         search
        mov         eax,0x41797261
        cmp         [esi+8],eax
        jne         search

        mov         ebx,[edx+24h]
        add         ebx,ebp
        mov         cx,[ebx+ecx*2]
        mov         ebx,[edx+1Ch]
        add         ebx,ebp
        mov         eax,[ebx+ecx*4]
        add         eax,ebp
    }
   
    return 0;
}

进程初始化后FS:0 指向 TEB
TEB里偏移30h处是PEB地址;
mov       eax,[eax+0Ch]
mov       esi,[eax+1Ch]
这个是先后得到PEB_LDR_DATA 和 InitializationOrderModuleList头部地址;
这个列表里第 2 项就是kernel32.dll的地址;
后面是从PE的导出表查找函数名,和LoadLibraryA的hex表示比较,然后得到函数地址;
用这种方法再得到 GetProcAddress函数地址,然后就可以获取别的函数地址;
很苯的方法,over!

从零构建Windows Shellcode加载器:原理、实现与免杀对抗 在Windows安全与系统编程领域,进程内存管理和API调用是核心基础概念。理解内存分配、权限控制及线程执行机制,是掌握程序行为控制的关键。这些底层原理在安全研究、渗透测试及软件保护中具有重要技术价值,尤其在实现代码注入、行为隐藏等场景时尤为关键。通过动态API解析、内存权限分离和线程执行混淆等技术,可以有效规避安全软件的监控。本文聚焦于Shellcode加载器的定制化实现,深入探讨如何结合加密存储、间接系统调用等热词技术,构建具备免杀能力的加载模块,为安全研究人员提供从原理到实践的完整实现路径。 阅读详情

相关推荐

[逆向工程]什么是TEB 与 PEB(二十九)

[逆向工程]什么是TEB 与 PEB(二十九)

曼岛_的博客 1610

Shellcode编写

二是ESI寄存器的值自动增加32位,也就是当第一轮执行之后,esi中放的是下一个函数名称的地址,继续将其指向的内存空间的前四个字节送到eax中(也就是函数名称列表中的第一个函数名称的前四个字节),同时esi加4,指向了第二个函数名称的地址,一直向后比对,直到每个字节都比对成功后,此时的ecx中存的就是目标函数在函数名称列表中的位置。这个成员在PEB结构体中的偏移量是0x0C。在32位Windows系统中,FS寄存器指向TEB的起始地址,而在64位Windows系统中,GS寄存器指向TEB的起始地址。

weixin_54452942的博客 1722

Windows逆向实战:用OD与IDA动态解析PEB结构绕过反调试检测

在Windows系统编程与软件安全领域,进程环境块(PEB)是一个核心的底层数据结构,它承载着进程的运行时关键信息。其工作原理在于,操作系统为每个进程维护一个PEB,其中包含模块加载列表、堆管理信息和调试标志等。理解PEB对于软件调试、安全分析和逆向工程具有重要价值,尤其在对抗反调试机制时,通过解析PEB中的调试标志(如BeingDebugged字段),可以识别或绕过检测。在实际应用场景中,这常用于游戏安全、恶意软件分析和软件保护技术研究。本文将结合OllyDbg动态调试与IDA Pro静态分析,演示如何定

weixin_28568819的博客 864

5.4 Windows驱动开发:内核通过PEB取进程参数

PEB结构`(Process Envirorment Block Structure)`其中文名是进程环境块信息,进程环境块内部包含了进程运行的详细参数信息,每一个进程在运行后都会存在一个特有的PEB结构,通过附加进程并遍历这段结构即可得到非常多的有用信息。 在应用层下,如果想要得到PEB的基地址只需要取`fs:[0x30]`即可,TEB线程环境块则是`fs:[0x18]`,如果在内核层想要得到应用层进程的PEB信息我们需要调用特定的内核函数来获取。

微软技术分享 8869

第10章 shellcode实战:05 原则:Kernel32基址的获取

​简单说,kernel32基址是指kernel32.dll这个动态链接库加载到内存中后,它内存最开始的位置。任何一个exe加载到内存执行的时候,它所用到的动态链接库(dll)也都需要加载到内存中,才能够使用这个dll中的导出函数。在shellcode中,因为不存在PE结构,所以对每一个用到的函数所对应的dll文件,都需要我们手动去加载(即映射到内存)。比如我们要使用socket()这个函数,就需要先将这个函数所在的ws2_32.dll映射到内存,一般我们可以使用LoadLibrary这个函数来实现。

李小咖·网安技术库 1402

STM32 LwIP协议栈优化:从TCP延迟10ms降至1ms的内存配置手册

摘要: 本文针对STM32嵌入式开发中LwIP TCP通信的高延迟问题(默认配置下延迟达10~20ms),提出纯软件优化方案,通过调整内存配置与TCP参数将延迟降至1ms。核心问题包括内存池不足、pbuf分配低效及Nagle算法拖累,优化步骤包括: 内存池扩容:增大MEMP_NUM_TCP_PCB至10、PBUF_POOL_SIZE至32,避免资源竞争; pbuf静态池分配:采用2048字节大块缓冲区匹配DMA传输,减少分块与拷贝; 关闭Nagle算法:设置TCP_NODELAY=1,禁用延迟确认以加速小包

weixin_42212753的博客 1711

通过PEB定位GetProcAddress

【摘要】 在之前的文章中,我们实现了一个正向的匿名管道ShellCode后门,为了保证文章的简洁易懂并没有增加针对调用函数的动态定位功能,此类方法在更换系统后则由于地址变化导致我们的后门无法正常使用,接下来将实现通过PEB获取GetProcAddrees函数地址,并根据该函数实现所需其他函数的地址自定位功能,通过枚举内存导出表的方式自动实现定位所需函数的动态地址,从而实现后门的通用性。1.7.1 通...在之前的文章中,我们实现了一个正向的匿名管道ShellCode。

zjt_924的博客 182

HomeAssistant+HACS实战:5分钟搞定米家设备接入(附HomeKit配置技巧)

本文详细介绍了如何通过HomeAssistant和HACS插件商店快速接入米家设备,并分享HomeKit配置技巧。从HACS安装到米家设备接入,再到HomeKit设备集成,提供一站式智能家居解决方案,帮助用户实现设备统一管理和自动化场景设置。

weixin_29192141的博客 1052

病毒分析技巧之API地址获取

点击蓝字关注我们0x00目的 通过该实验,使学生掌握使用PEB结构确定kernel32.dll基地址的方法与原理,通过对PE导出表结构分析来理解获取API函数地址的方法,最终通过编码完...

蚁景网安学院 1567

15. GD32E230定时器实战:基于TIMER5的1秒LED闪烁中断配置详解

本文详细讲解了如何在GD32E230微控制器上配置TIMER5定时器,实现精准的1秒LED闪烁中断。内容涵盖从时钟开启、参数计算、中断设置到服务函数编写的完整流程,重点解析了预分频值与周期值的配置方法,帮助开发者掌握硬件定时器的核心应用。

weixin_29092787的博客 136

Mamba vs YOLO:目标检测选型指南(附实际项目对比)

本文深入对比了Mamba和YOLO在目标检测领域的性能差异与应用场景。通过实际项目数据,分析了两者在城市交通监控、工业质检等场景下的表现,提供了详细的选型指南和部署优化建议,帮助开发者根据实时性、精度等需求选择最适合的解决方案。

weixin_29062255的博客 369

4月5日,学习shellcode,用peb找函数地址

虽然最后事情的结果很郁闷,但中间的过程还是有些收获的,在编shellcode的时候,很重要的就是要找到要用的函数在内存中的位置,网上有很多写好的模板,方法就是通过peb和SEH找,找到的模板是用peb的。主要目的就是找到kernel.dll在内存中的位置,进而找到GetProcAddress()的位置,有了这两个,就可以有LoAdLibrAry(),然后其他的函数地址问题就都解决了FS:0是teb

uuty的专栏 2899

OrthoFinder功能、流程和文件注释

OrthoFinder 的标准输出包括:直系同源组,直系同源基因,有根基因树,解析基因树,无根物种树、有根物种树,基因重复事件以及相关的统计数据。

hs6605015的博客 3048

通过 PEB 隐藏导入表

有时候分析样本查看不到其中的导入表,可是没有导入表如何调用系统函数呢?这有可能是通过TEB、PEB动态获取,达到隐藏的目的。主要原理是通过FS:[0x30]所指向的PEB结构体入手,得到ntdll.dll或kernel32.dll的基址。 如下新建一个最简单的控制台程序,release编译。 可以看到VC.dll、KERNEL32.dll和其他一些系统函数,其中VC和系统函数可以去掉。 ...

VI___ 1377

SRT公网点对点传输及搭建SRT流媒体服务器

SRT是一种开源传输技术,它是基于UDP协议的,与RTMP不同的是,它具有高码率低延迟的传输特性,加强了在复杂不稳定网络环境中的传输可靠性,提升了不可预测的网络环境上的流传输性能。它不像NDI那样只适用于局域网传输,它更适用于公网环境下的信号传输。 S代表Secure,即安全加密的视频流,R代表Reliable,即具有从数据严重丢包中恢复的可靠性,T代表Transport,即动态适应变化的网络状况。 在音视频数据包传输的过程中,SRT会检测并适应两个传输点之间的实时网络状况,有助于补偿由于网络的拥塞而引起的

罗宇。的媒体技术工作室 1万+

鸿蒙应用发布实战:应用热更新的实现

在移动应用开发领域,应用更新是持续交付价值的关键环节。传统的应用更新方式需要用户手动下载完整安装包,不仅用户体验差,而且更新率往往不理想。热更新技术(也称为OTA更新)允许应用在不重新安装的情况下动态更新部分功能,极大提升了用户体验和迭代效率。本文专注于鸿蒙操作系统下的应用热更新实现方案,涵盖从原理到实践的完整知识体系。鸿蒙热更新的技术架构差分更新算法实现动态部署机制实际项目中的最佳实践安全与性能优化策略首先介绍鸿蒙热更新的背景和核心概念深入分析技术原理和算法实现。

操作系统内核探秘的博客 965

动态加载技术的几种方法

所谓动态加载技术,就是脱离导入表,编写代码来获取API调用 主要实现目标就是动态获取指定DLL的基地址,然后通过查找其导出表以获取API地址 其中获得指定DLL基地址方法有很多,下面列出几种 硬编码方式就不说了,这种办法虽然代码量少但太糟糕,经常出现各种问题 在说明具体方法之前先把4G地址空间的分布说明下 用户态低2GB空间分配 0x00000000~0x0000FFFF     空指

无题 1653

【WorkBuddy从入门到精通实战教程】实战案例 第 41 章 论文阅读与文献综述

本文系统讲解如何用WorkBuddy高效阅读论文并撰写文献综述。针对“读了一天没记住”的痛点,提出“三遍阅读法”:快速评估相关性、结构化提炼核心内容、批判性分析局限。结合提示词工程,实现单篇精读、多篇对比与综述框架搭建,显著提升效率。强调学术诚信,严防AI幻觉,要求所有引用与数据必须回源核对。最终目标是借助AI辅助理解与组织,但坚持自主思考与写作,真正掌握科研能力。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 144

从零解析:揭秘MSF生成calc弹窗shellcode的底层实现

本文深入解析了MSF框架生成calc弹窗shellcode的底层实现,从shellcode的基本概念到动态解析系统API、关键API调用细节,再到编码优化技巧和实际调试方法。通过逐字节拆解,揭示了如何通过PEB获取kernel32基址、使用哈希比较技术定位API地址,并最终调用WinExec实现计算器弹窗。文章还探讨了shellcode的兼容性处理、坏字符避免及安全防护措施,为安全研究人员提供了全面的技术参考。

weixin_42525738的博客 192

IDEA的使用指南

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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

《Windows PE权威指南》学习之第11章 动态加载技术

本章将学习引入函数的动态加载技术。动态加载技术是编写病毒程序、补丁程序必须掌握和学习的一种技术。该技术可以让程序设计者脱离复杂的导入表结构,在程序空间中构造类似导入表的调用引入函数机制。动态加载技术的核心是对被调用函数的地址的获取,调用函数位于动态链接库中。 动态链接库在程序运行时会被加载到进程的虚拟地址空间,因此,首先来看Windows操作系统对进程虚拟地址空间的管理。通过了解进程虚拟地址空间进一步理解操作系统、进程、动态链接库和被调用函数之间的关系。

chenyijun的专栏 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

病毒编程技术-3

* API函数地址的获取        在能够正确重定位之后,病毒就可以运行自己代码了。但是这还远远不够,要搜索文件、读写文件、进行进程枚举等操作总不能在有Win32 API的情况下自己用汇编完全重新实现一套吧,那样的编码量过大而且兼容性很差。Win9X/NT/2000/XP/2003系统都实现了同一套在各个不同的版本上都高度兼容的Win32 API,因此调用系统提供的Win32 API实现各种功

feijj2002_的专栏 1873

C2远控开发:底层对抗与高级规避技术详解

本文深入探讨了构建高隐蔽性C2(命令与控制)框架的关键技术,以对抗现代EDR(端点检测与响应)和杀毒软件的检测。主要内容包括:1. 动态API调用:通过PEB手动解析API地址,避免IAT静态检测,消除敏感函数名特征。 2. InlineHook技术:劫持系统API执行流,实现流量伪装或EDR监控绕过,包括5字节JMP Hook和突破内存加密的方法。 3. 内存加密与规避:通过动态解密Shellcode、直接系统调用(Syscall)绕过EDR用户态Hook,以及Hell's Gate技术动态获取系统服务号

油墨香^-^的博客 316

Obfusk8实战:如何用CT_HASH与PEB解析隐藏API调用痕迹

在Windows二进制开发中,API调用痕迹的隐藏是规避逆向分析的关键技术。Obfusk8作为一款轻量级C++17混淆库(Header Only),通过CT_HASH哈希计算与PEB(Process Environment Block)解析技术,提供了高效的API调用隐藏方案。本文将带你从零开始掌握这两种核心技术的实战应用,让你的二进制程序具备更强的反调试能力。 ## 为什么需要隐藏API调用痕

gitblog_00052的博客 434

动态API解析与绕过

在现代软件开发与安全领域,动态加载与解析 PE 文件、API 动态解析,以及利用系统内部结构(如 PEB 和 TEB)来隐藏行为,均是逆向工程、安全绕过和恶意软件分析中常见的技术手段。本文详细探讨了导入地址表(IAT)的作用、如何动态解析 WinAPI 函数、如何自实现,以及结合 API Hash 和 PEB 进行模块定位。这些技术不仅能帮助开发者更好地理解 Windows 系统的内部结构,还能在项目中应用于安全加固、代码混淆或反调试。

土豆的博客 855

64位系统应用层获取peb

  最近在搞64位系统移植。今个把在获取peb的问题描述一下。在32位系统下,我们都知道可以简单的通过内联汇编得到fs:30位置的就是peb的地址,也可使用NtQueryInformationProcess得到。其实在64位系统上也可以使用上面的方式简单的获取到,但必须你的应用程序是64位的。   我们现在要将的就是不改变我们现有的32位应用程序来正确的获取到peb的地址。大家不妨试试,直接将

Tommy(凌飞)的专栏 6500
上一篇: 浅析"新时代"下的病毒隐藏技术
下一篇: compression engine
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值