内存Dump原理
来源:互联网 发布:改键位软件 编辑:程序博客网 时间:2024/05/16 14:09
windows中一个可执行性程序被执行后,或者其他的数据文件,只要被影射到了某个进程的地址空间就有机会将它dump出来,这种技术到底有何用,举个例子,比如你有一个软件,并且设置了注册机制,而且用过特殊加密措施,比如用UPX,PECompact加密,但是如果在内存中将其给dump出来,所有的加密的壳都化为乌有,软件的保护也就化为乌有。
加密的文件必须解密后才能进驻内存,代码才能正常执行,所以在代码全部解密出来后,将内存中的未加密的数据弄出来,就是原始数据,经过一定的修正即可复原其原始未加密的版本。
为了能够弄出内存的数据,必须使用windows的一个API函数,ReadProcessMemory,通过此函数可以读取内存特定位置的数据,读取后就将其保存到磁盘。
读取数据时,按照内存页对其,一页一页搜索,找“MZ”和“PE”,0,0的标志,找到后可以保存到磁盘。磁盘中的可执行程序除了两个头(DOS头和NT头),后面紧跟的节表,节表记录后面数据的分布,后面的数据也就自然形成许多的节,各个节都有自己的属性,什么只读,可执行等。当然这些节影射到内存中也会赋予相应的属性,所以在一块只读的数据进行写操作,会发生无法写入的情况,(汇编语言可以尝试对.const中的值赋值,C语言可以尝试对用const定义的变量赋值),当然内存中的这些页基本都有读的操作,除非它自己修改了内存页的属性。
所以为了让自己做的共享软件不被别人很容易破解,最好的方法就是动态修改内存页的属性,但不再使用某个内存页时,可以使用 VirtualProtect,来完成。
看到ReadProcessMemory就会想到WriteProcessMemory,这个函数是众多内存注册机必备的。
这两个函数都是调试API一类的。
- 内存Dump原理
- dump 原理
- Anti-dump的原理
- dump JVM 内存
- JobTracker dump内存记录
- JobTracker dump内存记录
- Dump内存解析
- 傀儡进程内存Dump
- 傀儡进程内存Dump
- 内存区域dump
- [C]dump内存函数
- dump 内存分析
- crash dump的捕捉原理
- MAT dump分析程序内存
- LordPe dump进程内存实现
- jstack和dump内存分析
- android dump内存办法大全
- MAT dump分析程序内存
- Android JNI入门实例(Windows+Cygwin+Eclipse)
- property()
- [LeetCode] 一个BST的两个节点的值被交换,要求修正这个BST
- linux上ln命令详细说明
- 使用TreeSet集合比较Comparable接口和Comparator接口的区别
- 内存Dump原理
- 漫谈大数据仓库与挖掘系统(一):前言:大数据的价值
- 漫谈大数据仓库与挖掘系统(二):层次、维度与主题
- 漫谈大数据仓库与挖掘系统(三):ETL的开始——数据的传输和同步
- 正则表达式
- VIM的几个使用技巧
- python 解析线性方程组
- 一些hadoop分析的文章链接
- 【翻译】两种高性能I/O设计模式(Reactor/Proactor)的比较