自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 Obsidium v1.5.4壳 逆向分析

RemoveVectoredExceptionHandler 删除刚刚的异常处理函数。结构体偏移B8位置为新线程的EIP 在新EIP位置下一个断点。观察Zwcontinue函数传进去的Context结构体。可以在CE中查找指令地址 来得到当前真正执行的指令。使用aesenc 指令集 对数据进行AES解密。样本是使用这个壳进行打包的 来进行逆向。通过遍历DLL 导出表的方式来获取函数地址。跳出来之后 再经过一个异常就能进入主程序。马上就来个int 1进入异常处理函数。但是脱壳还是不会 太菜了。

2024-05-06 15:13:09 260

原创 VMP 简单源码分析(.net)

获取CPU的型号实现了一个指令集解释器,每个操作码对应一个特定的处理函数,用于执行相应的指令操作。在执行字节码时,解释器会根据操作码查找并调用相应的处理函数来执行指令。截获异常 先由虚拟机处理 处理不了再抛出异常检查运算数据的类型根据数据判断 实现无符号运算 以及运算溢出等的处理同理的还有异或 减法等获取目标程序框架设置调用方法支持实例方法、静态方法、虚拟方法和过滤方法。

2024-05-06 11:44:04 381

原创 X64 基础(1)

生成依赖项->生成自定义 勾选汇编选项新建ASM文件项目类型选择汇编在头文件中导出然后就可以正常调用了,不能直接内联。

2024-04-08 00:30:35 162

原创 生成文件的MD5码

【代码】生成文件的MD5码。

2023-05-13 13:34:28 1096

原创 DUMP进程内存保存文件

【代码】DUMP进程内存保存文件。

2023-05-05 12:22:49 307

原创 用驱动遍历进程的IAT表

WIN7 X86。

2023-05-02 16:27:33 189

原创 遍历读取驱动的签名

win7 X86。

2023-04-26 17:43:46 232

原创 使用驱动来枚举DPC

WIN7 X86。

2023-04-18 20:09:55 118

原创 用驱动遍历获取完整进程名

WIN7 X86。

2023-04-14 23:40:21 341

原创 用驱动遍历驱动

X86 win7 平台。

2023-04-08 17:10:20 167

原创 CVE-2022-21882复现

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-05-10 03:11:21 1309

原创 VAD 虚拟内存

Windows中的虚拟地址分配使用指令dt _EPROCESS 874ed030 观察EPROCESS结构体偏移为0x278的地方,这个地方就是系统拿来存放每个进程的虚拟地址空间的分配情况输入!vad 874ed030+278 查看该平衡二叉树Level是二叉树的层数 start是该块虚拟地址空间的起始地址 end为结束地址 commit为请求次数写一段程序测试下#include<stdio.h>#include<Windows.h>int main() {

2022-04-20 20:10:46 3054

原创 X64基础(一)

X64基础

2022-04-17 03:28:38 772

原创 信息安全数学基础

整数可除性判断素数例题:判断361是不是素数19≤√361, 小于等于19的素数有𝑝=1, 19 用𝑝去除361, 发现19除361为19,故361不为素数.最大公因数性质① (𝑎, 𝑏)=(𝑏, 𝑎).② 设𝑎, 𝑏为正整数, 若𝑏│𝑎, 则(𝑎, 𝑏)=𝑏.③ 设𝑎1,𝑎2,…,𝑎𝑛是𝑛个不全为零的整数, 则(i)𝑎1,𝑎2,…,𝑎𝑛与|𝑎1|, |𝑎2|, …, |𝑎𝑛|的公因数相同;(ii)(𝑎1,𝑎2,…,𝑎𝑛)=(|𝑎1|, |𝑎2|, …, |𝑎𝑛|).④ 设𝑎, 𝑏为正

2022-03-05 12:47:51 1737

原创 APC(四)

KiDeliverApc 内核APC从KiFastEntry进入内核然后进入KiDeliverApc函数分发APC.text:0043E262 loc_43E262: ; CODE XREF: _KiServiceExit+18↑j.text:0043E262 mov byte ptr [ebx+3Ah], 0.text:0043E266 cmp byte ptr

2021-12-01 17:30:04 2902

原创 APC(三)

内核APC插入VOID KeInitializeApc ( __out PRKAPC Apc, //输出APC __in PRKTHREAD Thread, //要插入的线程 __in KAPC_ENVIRONMENT Environment, //APC的线程环境 __in PKKERNEL_ROUTINE KernelRoutine, //内核函数 __in_opt PKRUNDOWN_ROUTINE RundownRoutine, //特殊函数

2021-11-30 23:34:54 251

原创 APC(二)

BOOLEANKeInsertQueueApc ( __inout PRKAPC Apc, //APC的结构 __in_opt PVOID SystemArgument1, __in_opt PVOID SystemArgument2,//参数 __in KPRIORITY Increment//优先级 ) ```

2021-11-26 13:09:40 383

原创 APC(一)

线程资源的利用如果线程出现等待的情况,如Sleep,WaitForStingleObject的情况,为了防止等待,所以会插入APC(异步过程调用)到用户链表或者内核链表中,进行切换时会检测有无APC的存在,然后进行调用。 +0x03a Alerted : [2] UChar //0对应内核 1对应三环 +0x03c Alertable : Pos 5, 1 Bit //是否能唤醒 +0x040 ApcState : _KAPC_STA

2021-11-23 23:06:02 2706

原创 驱动与R3的通信 -自定义包

驱动#include <ntifs.h>#include <Windowsx.h>#define DEVICE_NAME L"\\Device\\wangliang"#define SYM_NAME L"\\??\\wangliang"#define _COMM_ID 0x12345678typedef struct _CommPackage{ ULONG64 id; ULONG64 code; ULONG64 inData; ULONG64 inL

2021-07-18 03:28:14 346

原创 驱动与R3的通信

kd> dt PDRIVER_OBJECTWdf01000!PDRIVER_OBJECTPtr32 +0x000 Type : Int2B +0x002 Size : Int2B +0x004 DeviceObject : Ptr32 _DEVICE_OBJECT +0x008 Flags : Uint4B +0x00c DriverStart : Ptr32 Void +0

2021-07-13 17:36:45 684 1

原创 通过驱动断链来隐藏驱动

隐藏指定驱动尝试隐藏这个驱动#include <ntifs.h>typedef struct _KLDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks; LIST_ENTRY exp; ULONG un; ULONG NonPagedDebugInfo; ULONG DllBase; ULONG EntryPoint; ULONG SizeOfImage; UNICODE_STRING FullDllName; UNICO

2021-07-12 16:15:44 2787 1

原创 SUCTF 2019 EasySQL

首先尝试最简单的注入 直接nonono然后尝试union盲注,还是nonono之后尝试刚学的堆叠注入,好像有用的样子。然后没辙了,去看大佬们的WP,发现这个注入命令是select $_GET['query'] || flag from flag这里要修改sql_mode的值。。脑洞有点大的。然后构造payload ,最后跑出flag。还有一个*,1 的解法就不赘述了。知道注入命令就很好懂了。1;set sql_mode=PIPES_AS_CONCAT;select 1常见的sql

2021-07-05 18:05:42 196 1

原创 强网杯 2019 随便注

首先尝试直接去注入,发现好像并没有什么用尝试使用union盲注,preg_match() 函数可以根据正则表达式对字符串进行搜索匹配,发现全被禁了,所以排除union注入使用show,发现可以查看表名使用desc指令分别去查看这两个表结构的详细信息,这里1919810931114514这个表名必须要使用括起来。因为发现这里过滤了很多函数,因此考虑怎么去绕过。这里采用了预处理的语句。先把 select * from ` 1919810931114514 `,通过16进制编码变成一串数字

2021-07-05 13:16:30 215 2

原创 XSS漏洞(一)

XSS的原理通过XSS使用户浏览器运行恶意脚本,使用户在打开这个页面时,浏览器自动的去运行这个脚本。可以起到窃取用户cookie,以及模拟GST,POST请求来操作用户浏览器。XSS的运用窃取Cookie在对用户输入数据没有过滤时,web服务器会把用户输入数据直接返回给客户端。正常情况为www.xxx.com/xx.php?input=123如果要去窃取Cookie的话就可以使用一段JS代码对用户输入进行修改www.xxx.com/xx.php?input=<script>locati

2021-06-29 12:04:07 233 1

原创 SQL注入(一)

SQL的原理select *from user where id = 'xxxx'这条指令在PHP文件中可能会以var sql = "select * from users where id='"+username+"'"";的拼接形式来传入数据库中进行查询,然后数据库就会把结果返回。可以通过控制这些SQL指令来起到控制回返的值的作用SQL的利用通过xxx’#或是xxx’–#和–在mysql中起到了注释的作用,可以直接把后面的注释掉,起到一个改变命令的作用。举个例子,如果在PHP中指令是var

2021-06-29 02:50:40 390 1

原创 页属性

首先来看页属性的定义页目录表页表P位是存在位,当P位是0时,访问会产生异常R/W位是读写位,这个标志位对应着一组页或者一个页能否写入,当位0时,该页是只读的U/S位是

2021-05-06 15:16:10 838

原创 101012分页

WIN7 X86修改为 101012分页cmd管理员权限bcdedit /deletevalue {current} PAEbcdedit /deletevalue {current} nx bcdedit /set {current} nx AlwaysOffbcdedit /set {current} PAE ForceDisable 修改完后就是这个效果

2021-05-01 22:37:56 552 1

原创 任务段&任务门

TSS段用来权限切换的时候,替换原来寄存器的信息。TSS段的结构,一共104个字节,里面存放了上一个进程中的寄存器,栈和其他的一些信息

2021-04-28 01:30:01 193

原创 中断门&陷阱门

中断门,就是通过中断提权的一种手段下图为中断门的构造陷阱门也和中断门类似调用什么都类似就是构造一样跟调用门类似,但是不能往里面传参,所以高32位的前4位一定为0,同时TYPE位也有细微的改动,其他的并没有太大的改动。执行流程直接int 然后根据编号查IDT表,然后IDT表再去查段选择符,然后找到处理的函数,每个编号对应的中断类型都能在官方文档中找到。构造过程最基础的构造#include "stdafx.h"#include <WINDOWS.H>void __dec

2021-04-26 02:21:20 947

原创 调用门

调用门执行流程指令格式:CALL CS:EIP执行步骤:1.根据CS的值 查GDT表 找到对应的段描述符 S位必须为0 Type位为11002.根据段描述符中的 段大小和基地址找到执行的代码1.当通过门 权限不变时 只会PUSH两个值:CS 返回地址 新的CS由调用门决定2.当通过门,权限改变的时候,会PUSH四个值:SS ESP CS 返回地址,新的CS由调用门决定,新的SS和ESP由TSS提供。3.通过门调用是,要执行哪行代码由调用门决定,但使用RETF返回时,由堆栈中压入的值决定,进入门

2021-04-25 18:42:08 1050

原创 UNICODE_STRING

UNICODE_STRING 是在内核中描述字符串的结构体,和应用层的Char不一样,Unicode_String 每个字占两个字节,计算length是 *sizeof(WCHAR)定义为 UNICODE_STRING Str = {0}结构为typedef struct _UNICODE_STRING{USHORT Length;//字节数USHORT MaximumLength;//字节数,告诉系统函数多少内存可用PWSTR Buffer;//指向字符串的指针}UNICODE_STRING

2021-04-08 20:12:11 1508

原创 KPCR

1。当线程进入R0时,FS:[0] 指向KPCR,R3时FS:[0] 指向TEB。2。每个CPU都有一个KPCR结构体3。KPCR中存储了CPU一些数据,比如GDT,IDT等。kd> dt _KPCRnt!_KPCR +0x000 NtTib : _NT_TIB +0x000 Used_ExceptionList : Ptr32 _EXCEPTION_REGISTRATION_RECORD +0x004 Used_StackBase : Ptr32

2021-04-08 09:37:46 150 1

原创 进程&线程结构体

进程结构体每个Windows进程在R0都有对应的结构体,在windbg中查看该结构体。这个跟进程环境块 PEB不一样 ,前者多用于R0,后者多用于R3。kd> dt _EPROCESSnt!_EPROCESS +0x000 Pcb : _KPROCESS +0x098 ProcessLock : _EX_PUSH_LOCK +0x0a0 CreateTime : _LARGE_INTEGER +0x0a8 ExitTime

2021-04-08 08:48:03 298

原创 匿名管道

当一个管道建立时,它会创建两个文件描述符fd[0]和fd[1],其中fd[0]固定用于读管道,fd[1]固定用于写管道匿名管道只能用于父子进程或者兄弟进程之间,数据只能从一端流向另一端BOOL WINAPI CreatePipe(_Out_ PHANDLE hReadPipe,_Out_ PHANDLE hWritePipe,_In_opt_LPSECURITY_ATTRIBUTES IpPipeAttributets,_In_ DWORD nSize);父进程读取一个文件内容,通过管道传

2021-04-08 00:03:52 160

原创 多进程通信

多进程通信进程与进程在运行期间,需要数据的交换即进程通信 。进程间通信方式:共享内存管道(pipe )信号量消息队列:MFC中SendMessage()文件端口共享内存TCHAR szName[] = TEXT("Global\\MyFileMappingObject");//命名共享内存hMapFile = CreateFileMapping(szName..);//创建共享内存pBuf = (LPTSTR)MapViewOfFile(hMapFile..);//分配内存Read/

2021-04-07 17:18:31 1494 1

原创 实现一个自动锁

通过C++的构造函数和析构函数来实现对 临界区函数的封装#include<windows.h>#include<process.h>#include<stdio.h>CRITICAL_SECTION cs;//定义全局资源后马上定义一把锁class CLock{public: CLock() { InitializeCriticalSection(&cs); } ~CLock() { DeleteCriticalSection(&

2021-04-06 23:40:19 198

原创 线程之间的通信

线程的传参#include<Windows.h>#include<process.h>#include<stdio.h>int g_iValue = 0;UINT _stdcall ThreadProc(LPVOID arg) { int va = *(int*)arg;//可以通过修改这个值的类型实现传不同的参 printf("va:%d\n", va); for (int i = 0;i < 5;i++) { g_iValue++;

2021-04-06 18:52:19 134

原创 线程基础

线程线程即进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统锁完成的任务,那么线程表示完成该任务的许多可能的子任务之一。线程可以在处理器上独立调度执行,这样,在多处理器环境下就可以运行多个线程各自在单独处理器上进行。线程的好处有:1.易于调度,线程是系统调度的基本单位,线程的切换比进程要快2.提高并发性,通过线程壳方便有效地实现并发性,进程壳创建多个线程来指向同一程序的不同部分3.开销少,创建线程比创建进程快,仅占用少量资源比如栈与寄存器4.利于充分发挥多处理

2021-04-06 16:20:22 351

原创 WinDbg 学习(3)

查看SSDT表查看SSDT Shadow 表Shadow SSDT表在SSDT表下面uf + 地址或者函数名 查看该函数的反汇编代码

2021-04-05 11:10:29 149

原创 简单介绍 反调试

DebugPortKdDisableDebugger禁用内核调试IsDebuggerPresent/CheckRemoteDebuggerPresentHookHOOK一些与调试相关的函数NtOpenThread:防止调试器在程序内部创建线程NtOpenProcess:防止OD等调试工具在进程列表中看到KIAttachProcess:防止被附加上NtReadVirtualMemory:防止被读内存NtWriteVirtualMemory:防止内存被写KdReceivePacket:K

2021-04-04 17:59:39 489

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除