加密解密
文章平均质量分 76
灬鬼谷灬
这个作者很懒,什么都没留下…
展开
-
Kernel32加载地址查找的基本方法
搜索内存中的API有许多方法,主要的是要找到KERNEL32.DLL的加载地址,常用的基本方法也就几种。一、通过线程初始化时压入堆栈的ExitThread的地址来得到KERNEL32.DLL的地址。二、通过SEH异常链表三、通过TEB得到PEB结构的地址原创 2016-01-13 12:54:55 · 1770 阅读 · 0 评论 -
CreateFileMapping、MapViewOfFile
CreateFileMapping的MSDN翻译和使用心得 测试创建和打开文件映射的时候老是得到"句柄无效"的错误, 仔细看了MSDN以后才发觉是函数认识不透, 这里把相关的解释翻译出来HANDLE CreateFileMapping( HANDLE hFile, //物理文件句柄 LPSECURITY_ATTRIBUTES转载 2016-01-11 09:10:47 · 582 阅读 · 0 评论 -
线程本地存储TLS(Thread Local Storage)的原理和实现——分类和原理
本文为线程本地存储TLS系列之分类和原理。一、TLS简述和分类我们知道在一个进程中,所有线程是共享同一个地址空间的。所以,如果一个变量是全局的或者是静态的,那么所有线程访问的是同一份,如果某一个线程对其进行了修改,也就会影响到其他所有的线程。不过我们可能并不希望这样,所以更多的推荐用基于堆栈的自动变量或函数参数来访问数据,因为基于堆栈的变量总是和特定的线程相联系的。不过如果转载 2016-01-09 08:45:03 · 342 阅读 · 0 评论 -
代码重定位
重定位就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程,也就是说在装入时对目标程序中指令和数据的修改过程。为什么需要重定位?程序员在编写程序时,在使用某些常量、全局变量时,编译器把这些数据的地址编译成一个绝对地址(比如:call 0x400100),是以ImageBase(0x400000)为基准。当程序加载到ImageBase时,程序正常运行,可是当程序加载地址为0x5000原创 2016-01-12 08:49:15 · 1808 阅读 · 0 评论 -
加壳实现
学习了PE文件结构一段时间了,于是想写一个简单的壳更好的掌握所学的内容。一、加壳思路加壳软件一般要编写两部分内容(加壳软件和壳软件),目的是把壳软件附加到要保护的可执行文件里面实现一些目的。目前而言壳软件用dll来实现是比较简单的方式,当然也可以用其他的方式。加壳软件:(只增加一个段的实现方式)1>加载要被加壳的文件,并分析其PE结构。2>加载DLL到内存,并分析其PE结构,得原创 2016-01-19 11:45:54 · 3620 阅读 · 3 评论