
安全程序猿的自我修养
文章平均质量分 59
MailSloter
这个作者很懒,什么都没留下…
展开
-
declspec的用法小结
目前学了三个declspec的用法:1.线程局部存储TLS机制:(在全局变量或静态变量前加上标识符__declspec(thread)就变为私有变量)// 定义静态TLS全局变量__declspec(thread) int __TlsValue = 0;2.__declspec(naked)加在函数的定义前,代表函数的栈区是要由其自己写汇编开辟的,不加的时原创 2017-08-09 15:46:23 · 431 阅读 · 0 评论 -
Ring3层的DLL注入(32)(64)
原理:自己写的一个进程,将对方的进程空间打开,在其中写ShellCode,这句shellcode翻译为机器指令实际上就是loadlibrary(Dll.dll),也就是自己写的一个动态库,在这个动态库中这写了当有进程加载此动态库时弹出一个MessageBox。五个函数都在围绕ShellCode的这三个地址来写的。ShellCode中需要三个地址:1.EIP的地址,就是对方主线程的e原创 2017-11-22 21:30:57 · 297 阅读 · 0 评论 -
PE文件(1)导入表
PE文件(1)导入表概念导入函数的代码位于一个或者多个DLL中,在调用者程序中只保留一些相关的函数信息,包括函数名及其对应的DLL名等。 对于磁盘上的PE 文件来说,它无法得知这些输入函数将来在内存中的地址,只有当PE 文件被装入内存后,Windows的 加载器才将相关DLL 装入,并将调用导入函数的指令和函数实际所处的地址联系起来。 这就是“动态链接”的概念。动态链接是通过PE 文件...原创 2018-03-02 10:10:52 · 786 阅读 · 0 评论 -
PE文件(2)导出表
PE文件(2)导出表导出表概念导出表就是记载着动态链接库的一些导出信息。 通过导出表,DLL 文件可以向系统提供导出函数的名称、序号和入口地址等信息,Windows 加载器通过这些信息来完成动态连接的整个过程。扩展名为.exe 的PE 文件中一般不存在导出表,而大部分的.dll 文件中都包含导出表。但这并不是绝对的。例如纯粹用作资源的.dll 文件就不需要导出函数啦,另外有些特殊...原创 2018-03-02 10:19:17 · 452 阅读 · 0 评论 -
PE文件(3)重定位表
PE文件(3)重定位表重定位表概念程序编译时每个模块有一个优先加载地址ImageBase,这个值是链接器给出的,因此链接器生成的指令中的地址是在假设模块被加载到ImageBase前提之下生成的,那么一旦程序没有将模块加载到ImageBase时,那么程序中的指令地址就需要重新定位,从而需要重定位表的修正。 对于EXE应用程序来说,在自己独立的4G进程空间中,它是肯定加载到ImageBa...原创 2018-03-02 10:28:19 · 539 阅读 · 0 评论 -
线程局部存储
1.TLS(Thread—Local—Storage)机制进程中的全局变量与函数内定义的静态(static)变量,是各个线程都可以访问的共享变量。在一个线程修改的内存内容,对所有线程都生效。 如果需要在一个线程内部的各个函数调用都能访问、但其它线程不能访问的变量,就需要新的机制来实现。这就是TLS。 最简单的办法就是建立一个全局表,通过当前线程ID去查询相应的数据,因为各个线程的ID不同,...原创 2018-03-14 08:56:12 · 378 阅读 · 0 评论