天地之间,物各有主…

#include <stdio.h>
#include <wchar.h>
#include <inttypes.h>
#include <windows.h>
#include <tlhelp32.h>
#include <shlwapi.h>typedef struct _dump_t {uint64_t addr;uint32_t size;uint32_t state;uint32_t type;uint32_t protect;
} dump_t;HANDLE open_process(uint32_t pid)
{HANDLE process_handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);if(process_handle == NULL) {printf("[-] printf getting access to process: %ld!\n", GetLastError());}return process_handle;
}int dump(uint32_t pid, const wchar_t *filepath,uintptr_t addr, uint32_t length)
{SYSTEM_INFO si; MEMORY_BASIC_INFORMATION mbi; DWORD written_bytes;HANDLE process_handle, file_handle; DWORD_PTR read_bytes;uint8_t buf[0x1000]; dump_t d;GetSystemInfo(&si);file_handle = CreateFileW(filepath, GENERIC_WRITE, 0,NULL, CREATE_ALWAYS, 0, NULL);if(file_handle == NULL) {printf("[-] printf opening dump filepath: %S\n", filepath);}process_handle = open_process(pid);uint8_t *ptr = si.lpMinimumApplicationAddress;while (ptr < (uint8_t *) si.lpMaximumApplicationAddress) {if(VirtualQueryEx(process_handle, ptr, &mbi, sizeof(mbi)) == FALSE) {ptr += 0x1000;continue;}if((mbi.State & MEM_COMMIT) == 0 || (mbi.Protect & PAGE_GUARD) != 0 ||(mbi.Type & (MEM_IMAGE | MEM_MAPPED | MEM_PRIVATE)) == 0) {ptr += mbi.RegionSize;continue;}d.addr = (uintptr_t) ptr;d.size = mbi.RegionSize;d.state = mbi.State;d.type = mbi.Type;d.protect = mbi.Protect;// If --dump-block is specified, restrict to a particular block.if(addr != 0 && length != 0 && (d.addr < addr || d.addr > addr + length)) {ptr += 0x1000;continue;}WriteFile(file_handle, &d, sizeof(d), &written_bytes, NULL);for (uint8_t *end = ptr + mbi.RegionSize; ptr < end; ptr += 0x1000) {if(ReadProcessMemory(process_handle, ptr, buf, sizeof(buf),&read_bytes) == FALSE || read_bytes != sizeof(buf)) {printf("[-] Unable to read a full page?!");}WriteFile(file_handle, buf, sizeof(buf), &written_bytes, NULL);}}CloseHandle(process_handle);CloseHandle(file_handle);return 0;
}int main(){int pid;scanf("%d",&pid);const wchar_t *file_name = "uuu.dmp";uintptr_t start_addr = 0x40000;uint32_t length = 0x200;dump(pid, file_name, start_addr, length);return 0;
}

Windows内存dump相关推荐

  1. jstat 内存泄漏_基于Java内存dump文件分析解决内存泄漏问题

    概述 本文介绍一次解决现场java内存泄漏问题的经过,希望能提供后续遇到类似情况的读者一点思路. 生产环境发现的问题问题 生产环境运维人员反馈,服务器(windows系统)卡死,相关的服务都运行异常, ...

  2. Windows内存管理学习笔记(一)—— 线性地址的管理

    Windows内存管理学习笔记(一)-- 线性地址的管理 用户空间线性地址的管理 实验一:理解用户空间线性地址管理 Private Memory 实验二:理解Private Memory 堆 实验三: ...

  3. 利用Volatility进行Windows内存取证分析(一):初体验

    简介 承接上文,上文中使用cuckoo沙箱的时候提到过,分析恶意代码的时候,首先利用沙箱做粗略分析,然后可以目标程序进行动态分析(OD,Windbg调试)或者静态分析(IDA静态反汇编).如果嫌每次逆 ...

  4. windows内存泄露定位方法

    windows内存泄露定位方法 内存泄露(Memory Leak)是C/C++程序经常遇到的一个棘手问题.简单来说,内存泄露就是没有释放本来应该释放的内存. 可以把解决内存泄露问题分成两步,第一步是定 ...

  5. Windows下dump文件的生成

    Windows下Dump文件分为两大类,内核模式Dump和用户模式Dump.内核模式Dump是操作系统创建的崩溃转储,最经典的就是系统蓝屏,这时候会自动创建内核模式的Dump.用户模式Dump进一步可 ...

  6. 数字取证技术 :Windows内存信息提取

    数字取证技术 :Windows内存信息提取.后面会花一部分时间,写一些数字取证相关的文章.攻击技术贴多如牛毛,眼下不管是网安,还是安全厂商, 欠缺的是对取证技术的研究. 大致想了一下,主要会从以下几个 ...

  7. Windows内存管理和linux内存管理

    windows内存管理 windows 内存管理方式主要分为:页式管理,段式管理,段页式管理. 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页:页式管理把内存空间按照页的大小划分成片或 ...

  8. windows内存管理和API函数

    windows内存管理知识: 1.分段或分页内存管理 2.物理地址和虚拟地址,虚拟地址空间. 3.虚拟内存布局,内存分工,堆,栈. 4.内存存取权限. 5.标准C内存管理函数与windows内存管理A ...

  9. Windows内存管理学习笔记(三)—— 无处不在的缺页异常

    Windows内存管理学习笔记(三)-- 无处不在的缺页异常 缺页异常 实验一:设置虚拟内存 无处不在的缺页 位于页面文件 保留与提交的误区 实验二:理解缺页异常 EXECUTE_WRITECOPY ...

最新文章

  1. 送书 | 你一定能看懂的算法基础书(代码示例基于Python)
  2. python语言中的多行注释符是_有没有一种方法可以在Python中创建多行注释? - python...
  3. 解锁新姿势 |如何利用配置中心规范构建PaaS服务配置
  4. java 关于String
  5. 字节跳动最新开源!java语言程序设计进阶篇
  6. 释放数据价值,大数据分析如何助力电商获客又增收?
  7. 阿里灵杰:AI工程化助力产业数字升级
  8. Chapter7-6_Text Style Transfer
  9. 敏捷转型谁先动:老总,项目经理or团队
  10. suse 10 下mysql安装
  11. Linux的setup命令启动服务名称和功能
  12. Hyper-V Server 存储分层
  13. Maven笔记 - 第十章
  14. 【WIN11】微软拼音输入法单字频率固定方法
  15. ArcGIS中ObjectID,FID和OID字段区别
  16. iOS Instrument
  17. 微信小程序注册教程-详细图文教程
  18. 【Day4.5】走人行天桥去百丽宫海生馆
  19. 医疗信息管理系统数据库--MySQL
  20. Excel vba按指定列号内容插入分页符

热门文章

  1. ubuntu启动后一直黑屏
  2. 小程序 底部按钮兼容 iPhone X(解决底部横杠遮挡问题)
  3. win10轻松自动“备份和恢复”只要5步
  4. 雅思英语作文计算机和历史,关于computer的雅思写作范文
  5. ContrastMask: Contrastive Learning to Segment Every Thing
  6. Intel Distiller工具包-量化实现1
  7. xsy3320 string
  8. [转]黄金圣斗士处女座沙加读解
  9. 正交采样 matlab,MATLAB数值积分(正交)
  10. 谈谈snprintf