巴特西
首页
Python
Java
PHP
IOS
Andorid
NodeJS
JavaScript
HTML5
windbg 进程基址
windbg查找Kernel32.dll基址
一.首先准备好一个程序,运行起来,用windbg进行附加调试,由于每个windows下的程序都会加载kernel32.dll,因此,找基址的过程是一样的: 二.查看PEB地址: 法一.r $peb 法二.通过TEB获取,r $teb 获取到teb地址后,对_TEB结构体解析dt _TEB 3ca000 法三.通过fs寄存器获取,我们知道fs:[0]就是TEB结构体的首地址,但是,在windbg里dd fs:[0]时,地址却做了隐藏: 那该怎么办呢,其实,这就要看下TEB的结构了 在TEB结构的
Windbg 进程与线程 《第三篇》
Windbg既可以显示进程和线程列表,又可以显示指定进程或线程的详细信息.调试命令可以提供比taskmgr更详尽的进程资料,在调试过程中不可或缺. 一.进程命令 进程命令包括这些内容:显示进程列表.进程环境块.设置进程环境. 1.进程列表 多个命令可显示进程列表,但一般只能在特定情况下使用,它们是:|..this.!process.!dml_proc. 竖线命令显示当前被调试进程列表的状态信息. | [进程号] 注意:被调试进程列表.大多数情况下,调试器中只有一个被调试进程,但可以通过.atta
WINDOWS黑客基础(4):查找进程运行的基址
从WINDOWS VISITA开始以后,windows已经开始支持随机基址的关系,也就是说以前我们的进程基址都是从0x40000开始的,如果一个变量在我们第一次运行的时候地址为0x50000,那么以后也都会在这个位置 而VS2008后开始提供随机基址的功能,在WINDOWS VISITA后的版本也都支持这个功能,这样进程的基址将不会再固定从一个地方开始,变量的地址也会随着基址的不同而不同,加大了我们对一个进程修改的难度,我们每次修改一个变量不能再将变量写死,而是要根据基址+数据偏移量来算出数据的
通过进程ID获取基地址
下面代码是通过进程ID来获取进程的基地址,创建一个进程快照后,读取进程模块,一般情况下第一个模块就是进程的基地址,下面的程序通过模块的字符串匹配来找到基地址.通过MODULEENTRY32来读取,下面是代码: #include <Windows.h> #include <Tlhelp32.h> #include <stdio.h> HMODULE fnGetProcessBase(DWORD PID); DWORD GetLastErrorBox(HWND hWnd,
【逆向知识】开发WinDBG扩展DLL
如何开发WinDbg扩展DLL WinDbg扩展DLL是一组导出的回调函数,用于实现用户定义的命令.以便从内存转储中提取特定的信息.扩展dll由调试器引擎加载,可以在执行用户模式或内核模式调试时提供自动化任务的扩展功能.扩展DLL可以导出任意数量用于执行扩展命令的函数.每个函数都被显式地声明为DLL定义文件中的导出函数,.def文件和函数名必须是小写字母. WinDbg(DbgEng)扩展DLL必须导出DebugExtensionInitialize. 这将在DLL加载时调用,以便于初始化D
Windows核心编程笔记之进程
改变进程基址,获取进程基址 #include <Windows.h> #include <iostream> #include <strsafe.h> #include <STDLIB.H> using namespace std; #pragma comment(linker, "/BASE:0x400000") // 改变进程加载机地址 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE
【原创】内核ShellCode注入的一种方法
标 题: [原创]内核ShellCode注入的一种方法 作 者: organic 时 间: 2013-05-04,04:34:08 链 接: http://bbs.pediy.com/showthread.php?t=170959 最近学习内核注入,看见一篇老文章<rootkit之[七]IAT Hook -- HybridHook之终极打造>链接:http://bbs.pediy.com/showthread.php?t=60778,利用KUSER_SHARED_DATA写入shellcode
Linux内核之内存管理(4)--缺页处理程序
本文主要解说缺页处理程序,凝视足够具体,不再解释. //以下函数将一页内存页面映射到指定线性地址处,它返回页面的物理地址 //把一物理内存页面映射到线性地址空间指定处或者说把线性地址空间指定地址address处的页面映射到主内存区页面page上.主要工作是在相关也文件夹项和页表项中设置指定页面的信息.在处理缺页异常函数do_no_page中会调用这个函数. 參数:address--线性地址:page--是分配的主内存区中某一页面指针 static unsigned long put_page(u
Linux内核info leak漏洞
1 Information Leak漏洞风险 从应用层软件,到hypervisor再到kernel代码,都存在Information Leak的风险.下面给出一些示例: 应用层软件:通常是应用敏感数据泄漏,比如从远程客户端获取服务端敏感数据.CVE-2012-0053,Openssl的心脏滴血等. Hypervisor:主要是向guest泄漏hypervisor数据.CVE-2010-4525. Kernel代码:泄漏内核地址,空间布局等,如CVE-2013-2147. 这里主要分析内核中的I
R3注入的四种方式
DLL注入 1.首先要获取想要注入的进程句柄(OpenProcess) 2.从要注入的进程的地址空间中分配一段内存(VirtualAllocEx) 3.往分配的内存位置写入要注入的DLL名称(WriteProcessMemory) 4.从kernel32.dll中找到LoadLibrary(A或W)函数地址(GetModuleHandle+GetProcAddress) 5.创建远程线程执行加载DLL函数(CreateRemoteThread) 傀儡进程注入 1.首先读取恶意代码的可执行文件并将
hctf2016 fheap学习(FreeBuf发表的官方解法)
目录 如何在二次释放前修改函数指针 修改函数指针流程 如何获得进程的加载基址 puts函数的调用 如何获取system函数地址 说一下用DlyELF函数 如何调用system函数 ROP需要的栈布局 read函数的妙用 参数”/bin/sh”如何传递过去 参考资料 官方提供的解法还是有一些意思的.对于我来说又多了一种见识. 如何在二次释放前修改函数指针 修改函数指针流程 分配2个0x4字节长度的字符串后内存布局 图1 分配2个0x4字节长度的字符串后内存布局 删除3次字符串后内存布局,3次,而不
hctf2016 fheap学习(FlappyPig队伍的解法)
目录 漏洞原理 二次释放 如何在第二次释放前修改函数地址 fastbin的特性 修改函数指针流程 如何获得进程的加载基址 格式化字符串漏洞 确定printf函数在代码段中偏移 printf函数输出想要的地址 如何获得system函数的地址 寻找一个被fheap进程调用并且和system函数处于同一个so库的函数A 通过读取函数A在got.plt中相应位置的值获得函数A的地址 通过读取dynsym段中的信息计算system相对于函数A在so库中的偏移 实际运行效果 小结 参考资料 漏洞原理 程序自
linux0.11内核源码剖析:第一篇 内存管理、memory.c【转】
转自:http://www.cnblogs.com/v-July-v/archive/2011/01/06/1983695.html linux0.11内核源码剖析第一篇:memory.c July 二零一一年一月六日 ----------------------------------------- 博主声明:1.本系列非linux系统教程,仅仅是针对linux0.11内核源码,所做的剖析,注释.2.本系列参考:深入理解linux内核.linux内核完全注释,linux内核源代码情景分析3.
浅谈IAT加密原理及过程
上一次做完代码段加密后,又接触到了新的加密方式:IAT加密 IAT加密是通过隐藏程序的导入表信息,以达到增加分析程序的难度.因为没有导入表,就无法单纯的从静态状态下分析调用了什么函数,动态调试时,也无法直接从调用处判断出调用的函数.从而增加了程序分析的难度. IAT加密思路如下: 1.把IAT信息全部删除掉,只留下DLL名和第一个调用函数的信息(目的是让程序在最开始运行时能正常调用那些初始化类的函数) 2.根据导入表的信息,自己实现函数加载,通过LoadLibraryA和GetProcAddre
Process Doppelg&;#228;nging
进程注入:Process Doppelgänging 攻击者可以通过Process Doppelgänging将恶意代码注入到进程中,从而逃避基于进程的防护,并且进行可能的特权提升.Process Doppelgänging是一种在单独的活动进程的地址空间中执行任意代码的方法. Vista中引入了Windows事务NTFS(TxF)作为执行安全文件操作的方法.为确保数据完整性,TxF仅允许一个事务处理句柄在给定时间写入同一个文件.在写句柄事务终止之前,所有其他句柄均被隔离,只能读取打开该
驱动开发:内核R3与R0内存映射拷贝
在上一篇博文<驱动开发:内核通过PEB得到进程参数>中我们通过使用KeStackAttachProcess附加进程的方式得到了该进程的PEB结构信息,本篇文章同样需要使用进程附加功能,但这次我们将实现一个更加有趣的功能,在某些情况下应用层与内核层需要共享一片内存区域通过这片区域可打通内核与应用层的隔离,此类功能的实现依附于MDL内存映射机制实现. 应用层(R3)数据映射到内核层(R0) 先来实现将R3内存数据拷贝到R0中,功能实现所调用的API如下: IoAllocateMdl 该函数用于创建
[2017-08-09]一则使用WinDbg工具调试iis进程调查内存占用过高的案例
最近遇到一个奇葩内存问题,跟了三四天,把Windbg玩熟了,所以打算分享下. 症状简介 我们团队的DEV开发环境只有一台4核16G的win2012r2. 这台服务器上装了SqlServer.TFS(项目管理.远程Git库.CI.生成代理).两个系统的整套DEV环境(六七个iis站点和八九个win服务), 还有其他一些辅助服务什么的,总之负担相对较重,内存占用经常10个G以上. 现象是经常报内存不足(平常明明还剩余至少5个G的内存). 然后我们发现有个iis站点不对劲,是一个为电商平台后台管理系统
用windbg显示特定进程虚拟地址的方法
1 必须使用Livekd.exe启动windbg 2 !process PID 3 找到PROCESS对象的地址:PROCADDR 4 找到进程的DirBase 5 r cr3 = DirBase 6 .Process PROCADDR 7 已经进入该进程领空,可以使用dd查看鸟 :)
【转】一则使用WinDbg工具调试iis进程调查内存占用过高的案例
最近遇到一个奇葩内存问题,跟了三四天,把Windbg玩熟了,所以打算分享下. 症状简介 我们团队的DEV开发环境只有一台4核16G的win2012r2.这台服务器上装了SqlServer.TFS(项目管理.远程Git库.CI.生成代理).两个系统的整套DEV环境(六七个iis站点和八九个win服务),还有其他一些辅助服务什么的,总之负担相对较重,内存占用经常10个G以上. 现象是经常报内存不足(平常明明还剩余至少5个G的内存).然后我们发现有个iis站点不对劲,是一个为电商平台后台管理系统提供a
windbg 边学边记attach 进程和open dump的两个方式查看线程的占用cpu资源
首先我是attach到进程的方式,附加到进程把. vs里边有个远程调试就是通过连接到远程机附加到进程操作的.在 有公网IP情况下挺好用,但涉及到nat穿越之类的,因为用户的不方便设置,这种调试方式也有局限性. 6. lmf 列出当前进程中加载的所有dll文件和对应的路径 奇怪没找到我程序里边加载的dll 乖乖滴.难道attach 进程把dll关了吗? 用空用dump 试试. 11!runaway 可以显示每一个线程的cpu消耗 这个命令挺好,直接找到哪个线程占得时间久 ,如果一直占着,那这个线
热门专题
mysql concat怎么拼接单引号
easyexcel读取多个sheet文件
shell里面有没有小于等于号
python基础选择题 切片
cosbench开启driver均衡
heat stack表
dblink 的删除与创建
存储过程 decode
vs2022 COM组件在哪
gdop与定位精度的关系
WPF 设置单选框 RadioButton颜色
vue3 全局loading插件
python socket 代理
windows命令行执行.bin文件
tfs 2015安装教程
sqlmap注入过程
mobilelink连接不上
vue定义一个对象 data()
java2017怎么生成web.xml文件
MyEclipse marketplaces打不开