- 博客(37)
- 资源 (1)
- 收藏
- 关注
转载 DLL注入技术之远线程注入
DLL注入技术之远线程注入 DLL注入技术指的是将一个DLL文件强行加载到EXE文件中,并成为EXE文件中的一部分,这样做的目的在于方便我们通过这个DLL读写EXE文件内存数据,(例如 HOOK EXE文件中的API),或以被注入EXE的身份去执行一些操作等等。 远线程注入原理是利用Windows 系统中CreateRemoteThread()这个API,其中第4个参数是准
2016-07-13 20:53:41
316
转载 DLL注入技术之依赖可信进程注入
DLL注入技术之依赖可信进程注入 依赖可信进程注入原理是利用Windows 系统中Services.exe这个权限较高的进程,首先将a.dll远线程注入到Services.exe中,再利用a.dll将b.dll远线程注入到待注入进程中。具体过程如下图所示:这里提供一个小技巧,当注入到Services.exe里的DLL时,想在做完事情后悄无声息的将自己释放掉,在Wind
2016-07-13 20:53:02
272
转载 DLL注入技术之劫持进程创建注入
DLL注入技术之劫持进程创建注入 劫持进程创建注入原理是利用Windows系统中CreateProcess()这个API创建一个进程,并将第6个参数设为CREATE_SUSPENDED,进而创建一个挂起状态的进程,利用这个进程状态进行远程线程注入DLL,然后用ResumeThread()函数恢复进程。1.创建挂起的进程 下面是创建一个挂起的计算器程序进程的主要代码:
2016-07-13 20:52:22
265
转载 m_pDC->GetSafeHdc()的思考
问题: 经常看到OpenGL中的视场设置中有m_pDC->GetSafeHdc()这句话,我就想了想为甚要这样写呢?看了OpenGL和Vc技术内幕后,我终于好想知道了为什么。解答: 首先从 OpenGL开始,因为每个OpenGL应用程序必须有一个渲染描述表RC,而必须在会之前它应该是当前得到。渲染描述表是OpenGL输出与Windows设备描述表联系的机
2016-07-09 23:41:19
700
转载 ListCtrl的扩展类EditListCtrl
该类继承自MFC的CListCtrl类;实现列可选,多单元格可选,单击选中单元格并能双击编辑,同时也可以设定某一列是否能进行编辑等等。功能强大,欢迎使用。头文件:CEditListCtrl.hclass CEditListCtrl : public CListCtrl{ // Constructionpublic: CEditListCtrl(); // Attri
2016-07-09 22:57:59
462
转载 我对CONTAINING_RECORD宏的详细解释
宏 CONTAINING_RECORD 的用处其实还是相当大的, 而且很是方便, 它的主要作用是:根据结构体中的某成员的地址来推算出该结构体整体的地址!下面从一个简单的例子开始说起, 我们定义一个结构体, 同时类型化:typedef struct{ int a; int b; int c;}ss;这是一个很简单的结构体, 没什么特殊的, 稍微分析下该结
2016-07-09 19:53:09
182
转载 PE文件详解之区块表
趁热打铁,今天开始对块的学习。 块最重要的结构体是:_IMAGE_SECTION_HEADER 。 PE文件中所有节的属性都被定义在节表中,节表由一系列的IMAGE_SECTION_HEADER结构排列而成,每个结构用来描述一个节,结构的排列顺序和它们描述的节在文件中的排列顺序是一致的。节表总是被存放在紧接在PE文件头的地方;节表中IMAGE_SECTION_H
2016-07-09 19:52:46
295
转载 PE文件详解之区块表
趁热打铁,今天开始对块的学习。 块最重要的结构体是:_IMAGE_SECTION_HEADER 。 PE文件中所有节的属性都被定义在节表中,节表由一系列的IMAGE_SECTION_HEADER结构排列而成,每个结构用来描述一个节,结构的排列顺序和它们描述的节在文件中的排列顺序是一致的。节表总是被存放在紧接在PE文件头的地方;节表中IMAGE_SECTION_H
2016-07-09 19:35:30
166
转载 PE文件详解之IMAGE_NT_HEADER结构
PE Header 是PE相关结构NT映像头(IMAGE_NT_HEADER)的简称。里面包含了许多PE装载器用到的重要字段。 先看看该结构体:[cpp] view plain copytypedef struct _IMAGE_NT_HEADERS { DWORD Signature
2016-07-09 19:30:47
440
转载 PE文件详解之PE文件头
1, PE文件头(PE Header ) 紧挨着 DOS stub 2, PE Header 是PE相关结构NT映像头(IMAGE_NT_HEADER)的简称。里面包含着许多PE装载器用到的重要字段。 3,执行体在支持PE文件结构的操作系统中执行时,PE装载器将从 IMAGE_DOS_HEADER 结构中的 e_lfanew 字段里找到PE Header的其实偏移量,
2016-07-09 19:29:50
423
转载 PE文件详解之MS-DOS头
MS-DOS头 1,每个PE文件是以一个DOS程序开始的,有了它,一旦程序在DOS下执行,DOS才能识别出这是有效的执行体。 2,PE文件的第一个字节起始于一个传统的MS-DOS头部,被称作为IMAGE_DOS_HEADER。 3,IMAGE_DOS_HEADER 结构如下:[cpp] view plain copy
2016-07-09 19:29:22
289
转载 PE文件详解之IMAGE_NT_HEADER结构
PE Header 是PE相关结构NT映像头(IMAGE_NT_HEADER)的简称。里面包含了许多PE装载器用到的重要字段。 先看看该结构体:[cpp] view plain copytypedef struct _IMAGE_NT_HEADERS { DWORD Signature
2016-07-09 19:27:03
174
转载 PE文件结构简介
PE结构总览图MZ头部又称为DOS头部,该部分用于在DOS下加载可执行程序,是用IMAGE_DOS_HEADER来定义的。DOS残留是一段简单的程序,主要用于输出“This program cannot be run in DOS mode.”类似的字符串。存在DOS头部的原因,关键是为了该可执行程序可以兼容DOS系统。PE头部PE头部保存W
2016-07-09 19:13:43
181
转载 DOS头部IMAGE_DOS_HEADER
对于一个PE文件来说,最开始的位置就是一个DOS程序。DOS程序包含一个DOS头和一个DOS程序体。DOS头部是由IMAGE_DOS_HEADER结构体来定义的。该结构体定义如下:[cpp] view plain copytypedef struct _IMAE_DOS_HEADER { //DOS .EXE he
2016-07-09 19:12:15
371
转载 PEB及PEB_LDR_DATA结构
PEB结构如下:(比MSDN上详细多了http://msdn.microsoft.com/en-us/library/windows/desktop/aa813706(v=vs.85).aspx)这个进程环境块就不罗嗦了,直接贴代码。[cpp] view plain copytypedef struct _PEB { // Size:
2016-07-09 19:08:25
617
转载 Windows API数据类型表
BOOL 布尔型变量BYTE 字符类型(8位)CHAR 8比特字节(ANSI)CONST 常量,相当于标准C中的"const"关键字
2016-03-14 00:19:31
230
转载 ssdt与shadowssdt区别
(ring3) (NtOpenProcess) ssdt层 实现OpenProcess->ntdll!ZwOpenProcess->ntos!ZwOpenProcess->ntos!NtOpenProcess(内核中有2套函数 ,zw,nt,nt才是真正的执行函数,zw只是一个过渡函数,可用ida察看ntoskrnl.exe
2016-02-26 22:49:00
213
转载 进入保护模式
本文为 第11章笔记以下图2, 图4和图5截自Intel手册全局描述符表全局描述符表中存放着段描述符, 每个段描述符8个字节.为了跟踪全局描述符表, 处理器内部有一个48位寄存器, 叫做全局描述符表寄存器(GDTR), GDTR分为两部分,分别为32位的线性地址和16的边界, 32位线性基地址部分保存的是全局描述符表在内存中的起始线性地址, 16位边界部分是全局描述符表的边界(界限),
2016-02-24 16:48:50
237
转载 页表项(PTE)地址计算公式的解释
在《JIURL玩玩Win2k内存篇 分页机制 (三)》中提到计算虚拟地址对应PTE地址的公式,如下:代码:PTE_Addr = (VirtualAddr >> 12) * 4 + 0xC0000000从虚拟地址转换到物理地址的过程来看,计算PTE需要虚拟地址的高10位做页目录索引,还需要第12 - 21位做页表索引,上面的公式晃眼看起来,貌似是错的,但是偏偏它又是对的,为
2016-02-24 16:46:37
786
转载 PAE下的虚拟内存映射 分析
PAE 即为物理地址扩展(Physical Address Extension),详细的内容请Google。 我的电脑是Win7,CPU是双核处理器,信息如下,0: kd> !sysinfo cpuinfo [CPU Information]~MHz = REG_DWORD 2527Component Information = REG_BINARY 0,0,0,0,0,
2016-02-24 16:45:17
190
转载 PAE ( Physical Address Extension )
首先,内存访问和管理是一个跨越应用程序,操作系统,硬件平台的一个复杂过程,不能单纯的讲32bit系统就支持4G内存,从而认为这个过程只是OS和内存两者之间的关系 理论上:32位系统,32bit的地址总线位数,寻址空间2^32B=4GB。 64位系统,寻址空间2^64。至于在实际应用环境中,对于有4G物理内存而OS最多只能识别3G的情况,主要是主板的问题,丢掉的内存被PCI设
2016-02-24 16:44:21
367
转载 GDT、GDTR、LDT、LDTR的理解
GDT是全局描述附表,主要存放操作系统和各任务公用的描述符,如公用的数据和代码段描述符、各任务的TSS描述符和LDT描述符。(TSS是任务状态段,存放各个任务私有运行状态信息描述符)LDT是局部描述符表,主要存放各个任务的私有描述符,如本任务的代码段描述符和数据段描述符等。GDTR是一个长度为48bit的寄存器,内容为一个32位的基地址和一个16位的段限。其中32位的基址是指GDT在内存中
2016-02-24 16:41:16
437
转载 DLL劫持技术详解(lpk.dll)
背景知识https://support.microsoft.com/en-us/kb/164501中记录了除了window的搜索dll顺序要看中文的兄弟可以看:https://support.microsoft.com/zh-cn/kb/164501我们当然主要关注32位的dll对于 32 位 Dll 在找到 KnownDLLs 注册表项:[cpp]
2016-02-21 21:11:53
482
原创 驱动基本框架
#include "Ring0.h"//驱动在卸载的时候,经过这里,我们可以在这里释放一些资源。//断开通话VOID DriverUnload(PDRIVER_OBJECT DriverObject){ UNICODE_STRING DeviceName; UNICODE_STRING DosDeviceName; //删除符号链接 RtlInitUnic
2016-02-21 13:14:07
274
原创 Shadow SSDT是什么玩意
全名:Shadow System Services Descriptor Table。影子 系统 服务 描述 表主管范围:图形(gdi32.dll)、用户(user32.dll)相关函数
2016-02-21 11:59:09
493
转载 反调试与反反调试内容收集
反调试技术在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编啦之类的方法破解自己。为了了解如何破解反调试技术,首先我们来看看反调试技术。一、Windows API方法Win32提供了两个API, IsDebuggerPresent和CheckRemoteDebuggerPresent可
2016-02-21 09:12:08
282
转载 标 题: 又灌水-反(调试/跟踪/脱壳) 技术集锦
标 题:又灌水-反(调试/跟踪/脱壳) 技术集锦发信人: kongfoo时 间: 2004-05-27,14:50详细信息: 反(调试/跟踪/脱壳) 技术集锦kongfoo/2004.4.18-5.27 具体代码就不贴了,知道原理就可以写出代码。一些是实践所得,一些是别人的成果,也都收集在一起了。解密、加密这个攻防战好像和传统作战的攻防战不同,防的
2016-02-21 09:07:28
239
转载 DLL注入技术之劫持进程创建注入
劫持进程创建注入原理是利用Windows系统中CreateProcess()这个API创建一个进程,并将第6个参数设为CREATE_SUSPENDED,进而创建一个挂起状态的进程,利用这个进程状态进行远程线程注入DLL,然后用ResumeThread()函数恢复进程。1.创建挂起的进程 下面是创建一个挂起的计算器程序进程的主要代码:STARTUPI
2016-02-20 22:29:39
517
转载 DLL注入技术之依赖可信进程注入
DLL注入技术之依赖可信进程注入 依赖可信进程注入原理是利用Windows 系统中Services.exe这个权限较高的进程,首先将a.dll远线程注入到Services.exe中,再利用a.dll将b.dll远线程注入到待注入进程中。具体过程如下图所示:这里提供一个小技巧,当注入到Services.exe里的DLL时,想在做完事情后悄无声息的将自己释放掉
2016-02-20 22:28:43
193
转载 Dll注入技术之远程线程注入
DLL注入技术之远线程注入 DLL注入技术指的是将一个DLL文件强行加载到EXE文件中,并成为EXE文件中的一部分,这样做的目的在于方便我们通过这个DLL读写EXE文件内存数据,(例如 HOOK EXE文件中的API),或以被注入EXE的身份去执行一些操作等等。 远线程注入原理是利用Windows 系统中CreateRemoteThread()这个API,其中第4个参数是准备运
2016-02-20 22:27:28
342
原创 远程注入Dll
Handle WINAPI CreateRemoteThread(hProcess,线程所属进程的进程句柄lpThreadAttributes,指向SECURITY_ATTRIBUTES结构指针,线程安全属性,Null。dwStackSize,线程初始大小,0为默认。lpStartAddress,地址空间中,线程函数起始地址。lpParameter,传递线程函数的参数dwC
2016-02-20 16:07:32
284
原创 走路Call
A总理论:已知一个数据,怎么寻找访问这个数据的Call转变成:怎么寻找把这个数据作为参数的Call同理:如果已经找到了这个数据,搜索Ce,看谁访问这个数据,就相当于谁把他作为参数调用了,那么这个Call就是众多Call里面的功能Call。总结:1.从Call-》基址2.从基址-》Call所以很多课程第一课是找基址找完就没事了,第二课根第一课也没有关系了其实第
2016-02-20 09:42:19
745
原创 钩子(hook)
SetWindowsHookEx(int idHook, 钩子类型(消息类型)HOOKPROC lpfn,指针,他指向处理的函数指针HINSTANCE hMod,实例句柄,Dll句柄DWORD dwThreadID 被监视线程ID);
2016-02-20 00:47:19
190
原创 OD 测试申请内存
OD插件StrongOD,里面有一个Alloc Memory ,快捷键Alt+Q。可以分配一个内存区域,然后选择窗口跟随,走到数据区,改写数据区数据,用于注入。
2016-02-19 23:50:22
542
原创 send断点数据地址
send断点数据地址,第一个参数socket,第二个数据内容,第三个数据长度,第四个不知道。看第二个数据内容的地址是不是固定的。固定的话,就下bb 固定地址 断点。
2016-02-19 23:31:25
198
原创 IsSerializeable
Serialize串行Bool IsSerializeable() const;实现方法virtual viod Serialize(CArchive& ar);CArchive 对于各种介质比如网络 文件 内存都做了封装。有效的隔离。
2016-02-19 21:55:24
167
原创 MFC几个重要的基类
老根CObject派生出CCmdTarget-这个类没听说能干啥。但是老子不出名,孩子却牛的狠。CCmdTarget有派生出CWinThread类,这个牛了,多线程,你懂的。1.多线程这个派生出CWinApp,这个更牛,程序的框架。2.第二条主线也比较牛。CWnd也是CCmdTarget派生出来的,他派生3个类,CDialog,CView,CFrameWnd,这三个类加上CWinA
2016-02-19 21:23:52
439
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人