- 博客(22)
- 资源 (63)
- 问答 (1)
- 收藏
- 关注
原创 获取GetProcAddress函数地址
我们都知道,GetProcAddress函数就是从系统文件kernel32.dll中导出的,而kernel32.dll是系统的基础链接库,每一个程序都会加载kernel32.dll的,我们只要得到kernel32.dll的基址就可以找到GetProcAddress函数的地址了。而获取kernel32.dll的加载基址的方法有3种,第一种就是通过特征匹配的暴力搜索,第二种就是利用系统的SEH机制找到...
2018-10-28 21:45:50 5355
原创 常见跳转指令与机器码的对应关系
机器码 跳转指令 机器码 跳转指令 FF E0 JMP EAX FF D0 CALL EAX FF E1 JMP EBX FF D1 CALL EBX FF E2 JMP ECX FF D2 CALL ECX FF E3 JMP EDX FF D3 CALL EDX FF E4 JM...
2018-10-26 20:30:14 2475
原创 从动态链接库中获取jmp esp地址
#include <windows.h>#include <stdio.h>int main(int,char**,char**){ BYTE* pbyte; int nPos=0,nAddr=0; HINSTANCE hHinst=NULL; bool bTips=true; hHinst=LoadLibrary("user32.dll"); if(!...
2018-10-26 20:00:34 2116
原创 栈溢出攻击基础
不知道有没有听说过缓冲区溢出,那什么是缓冲区溢出呢?缓冲区溢出就是在大缓冲区中的数据向小缓冲区复制的过程中,由于没有进行边界检查,从而导致数据从小缓冲区溢出而冲掉了相邻内存区域的其它数据。缓冲区溢出是很常见的内存错误,攻击者入侵系统利用缓冲区溢出几乎可以做任何事情,因为成功利用缓冲区溢出漏洞不仅可以修改内存中变量的数据,还可以劫持进程,执行恶意代码,获取主机控制权。我们要理解这一类攻击手法,那...
2018-10-25 17:00:06 1134
原创 汇编语言of条件转移指令
ja,无符号数大于时,cf=0 zf=0jae,无符号数大于等于时,cf=0jb,无符号数小于时,cf=1jbe,无符号数小于等于时,cf=1 zf=1jc,有进位时,cf=1jcxz,ecx为0时,ecx=0je,相等时,zf=1jg,有符号数大于时,zf=0 sf=ofjge,有符号数大于等于时,sf=ofjl,有符号数小于时,sf!=ofjle,有符号...
2018-10-22 21:38:03 1279
原创 汇编语言of常用指令
dst:目的操作符 src:源操作符 str dst,把任务状态段寄存器tr内容保存到dst指定的地址中。ltr src,从src指定的地址中装入数据给任务状态段寄存器tr。sldt dst,把局部描述符表寄存器ldtr内容保存到dst指定地址中。lldt src,从src指定地址中装入数据给局部描述符表寄存器ldtr。sidt dst,把中断描述符表寄...
2018-10-22 21:18:54 2426
原创 反汇编引擎的工作原理
OllyDBG和IDA都有一个很重要的功能:反汇编在X86平台下使用的汇编指令对应的二进制机器码为Intel 指令集一Opcode,Intel指令手册中描述的指令由6部分组成:Irsinucton Prefixes 指令前缀Opcode 指令操作码Mode R/M 操作数类型SIB Displacement 辅助Mode R/M,计算偏移地址Immedate 立即数 ...
2018-10-22 17:32:24 2620
原创 逆向笔记(一)
1.main()函数的真正原型 int main(int argc,char *argv[],char *envp[]);不信可以查看MSDN。2.程序会随着main()函数的结束而退出,所以会接近exit()函数。3.可以用OllDbg的字符串搜索法快速找到main()函数。4.可以用栈回溯法找到main()函数。5.三个常用调用约定_cdecl,_fastcaol,_stdca...
2018-10-20 10:14:54 408
原创 pe文件of映像文件头
typedef struct _IMAGE_FILE_HEADER {USHORT Machine;//运行平台USHORT NumberOfSections;//区段数量ULONG TimeDateStamp;//文件创建时间ULONG PointerToSymbolTable;//符号表指针ULONG NumberOfSymbols;//符号表数量USHORT SizeOfOpt...
2018-10-19 16:25:08 271
原创 pe文件ofPE文件头
PE文件头在DOS Sub后面,起始标记为PE自缚,由MS-DOS的e-lfanew字段指向。PE文件头的结构体。typedef struct _IMAGE_NT_HEADERS{ DWORD Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_POTIONAL_HEADER32 OptionalHeader;}IMA...
2018-10-19 16:03:43 346
原创 PE文件ofMS-DOS头
MS-DOS每一个pe文件都是存在的(除非手工移除了),它的存在就是为了兼容性,MS-DOS后面紧跟的是DOS Sub,有了它们,程序一旦在DOS系统下运行,就会出现一个错误提醒:this program cannot be run in MS-DOS mode。MS-DOS头结构体代码如下。typedef struct _IMAGE_DOS_HANDER{}typedef ...
2018-10-19 15:52:05 202
原创 汇编语言of640KB限制
DOS操作系统运行在实模式下面,而8086CPU寻址范围仅仅1MB,系统已经自动使用的存储器地址被安排在高端,地址从A0000h(640KB)开始的384KB,这里面有用于显示的视频缓冲区和BIOS的地址空间,而中断向量表和BIOS数据区被安排在低端地址剩下的从500h开始到A0000h总共不到640KB的内存操作系统和程序能够使用的,程序不能够使用这640KB以外的空间。...
2018-10-18 12:18:29 358
原创 I/O完成端口,Windows下高性能服务器基础
Windows设计目标是实现一个安全,健壮的操作系统,能够运行各种各样的程序来为用户提供服务,我们现在就来了解一下以前Windows系统下服务器的架构:1.串行模型,英文全称Serial model,就是一个线程等待一个客户发出请求,当请求到达的时候,线程会被唤醒去对客户的请求进行处理。2.并发模型,英文全称Concurrent model,就是一个线程等待一个客户请求,当一个客户请求到达...
2018-10-17 23:47:17 356
原创 汇编语言of控制寄存器
控制寄存器有三个。1.指令指针控制寄存器IP,instruction pointer,用来装载程序指令的地址,和cs结合起来可以准确地指向下一条指令要执行的地址,在16位CPU中寻址在64kb内,在32位CPU中可以寻址4gb。2.程序状态字寄存器PSW,program status word,记录一条指令执行后程序所处的状态,也是有着16位和32位之分,示意图自己百度。cf,carr...
2018-10-17 20:54:01 1252
原创 汇编语言of段寄存器
段寄存器segment用来说明段的起始地址,有cs,ds,es,ss,任何CPU中长度都是16位。cs段寄存器,code segment,代码段起始地址。ds段寄存器,data segment,数据段起始地址,内存访问一般默认ds为段基地址。es段寄存器,extra segment,附加段起始地址。ss段寄存器,stack segment,堆栈段起始地址,bp,sp默认ss为段基地...
2018-10-17 20:33:05 774
原创 汇编语言of保护模式下的描述符类型
保护模式下的描述符可以分为三种类型,就是存储段描述符,系统段描述符,控制描述符。不同类型的描述符长度都是相同的,都是8个字节。存储段描述符描述代码和数据区域,包括代码段和数据段的起始地址和范围。系统段描述符描述一些特定的数据区域,主要是局部描述符表和任务状态段。控制描述符描述程序的控制转移调用中断切换任务。在描述符的八个字节里面有两位是用来说明这个描述符级别的,叫描述符特权级,英文...
2018-10-17 20:26:30 399
原创 汇编语言基础知识of通用寄存器
通用寄存器有8个,都是16为位的,分别是ax,bx,cx, dx,si,di,sp, bp,其中寄存器ax,bx,cx, dx又被分为高八位和低八位,高八位和低八位都可以区分开来使用。ax寄存器的高八位是ah,低八位是al。bx寄存器的高八位是bh,低八位是bl。cx寄存器的高八位是ch,低八位是cl。dx寄存器的高八位是dh,低八位是dl。ax寄存器,accumulator,...
2018-10-17 19:48:03 1367
原创 RootKit基础学习
很多RootKit都是运行在Ring0层的,所以我们必须先了解Ring0是个什么东西。其实Ring(环)就是x86平台进行访问控制的概念,Ring0层也叫作环0层,win平台下一共就有4个环,不用说肯定是Ring0,Ring1,Ring2,Ring3了,权限最高的就是Ring0层,也叫做内核层,权限最低的就是Ring3层了呀,也叫作用户层。Windows系统就仅仅使用了Ring0层和Ring3...
2018-10-15 23:24:37 821
原创 理解线程局部存储区
线程局部存储区,英文总称Thread local Storage,简TLS。那TLS有什么用处呢?起始我们可以使用TLS将数据于一个正在运行的线程关联起来。将数据与线程关联起来是有帮助的,比如我们使用TLS来确定线程运行了多长时间。C/C++的运行库也使用了TLS,但是C/C++运行库是在多线程程序出现的很多年前设计的,所以运行库中的很多函数都是不支持多线程的,所以在多线程的环境中使用运行...
2018-10-14 23:54:01 1206
原创 PE文件的内存映射
如果想要理解PE文件与虚拟内存之间的映射关系,首先要理解一些概念:1.文件偏移地址(file offset) PE文件数据在硬盘中存放的地址就叫做文件偏移地址。用winhex程序查看文件时的offset就是文件偏移地址了。文件偏移地址就是指文件在磁盘上存放时相对于文件开头的偏移。2.装载基址(image base) 装载基址就是指pe文件装入内存时的基地址,一般情况下,EXE文件的装载基址...
2018-10-13 15:59:33 1898
原创 了解Windows系统下的PE文件
可执行文件结构是操作系统的根基,Windows系统下面有很多类型不同的文件,例如*.ex,*.dll,*.sys,*.ocx等文件格式都遵从PE文件结构的约定。PE文件实在win32位系统中诞生的,而且与win64位系统中的可执行文件格式基本相同。在Windows系统中,可以以二进制形式被系统加载执行的文件都是PE文件。PE文件就是Portable Executable(可移植执行体)...
2018-10-13 14:37:13 4738
原创 Windows_SEH终止处理
在分享中学习,才能让自己跑得更快。 SEH(structured exception handing),中文叫做结构化异常处理。我们使用SEH,不是意味着可以完全无视代码之中可能出现的那一些异常,但是可以将程序的功能实现和程序的异常处理区分开来。也就是说我们先把程序的功能都实现起来,到后面再去处理程序在运行的时候可能遇到的一系列情况。Microsoft把SEH加入Windows的原...
2018-10-12 21:23:33 579
darknet-window.zip
2020-03-19
OpenCV完成编译版本下载地址.txt
2019-10-22
d3d9_hook.zip
2019-08-13
python核心编程第三版中文版PDF
2019-04-07
VM虚拟机程序加壳
2019-03-15
Windows下使用驱动隐藏USB驱动器的办法
2021-03-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人