- 博客(44)
- 资源 (2)
- 收藏
- 关注
原创 Unity 模型的动态LOD优化
上一节主要讲述了动态生成球体模型的思路及正二十面体的生成,这一节我们来讲讲如何实现实现。因为将来要是生成的是一个6371km并具有一定分辨率的球体,若将每个顶点都细分计算出来,这样的顶点数无疑会是个天文数字,如此巨大的开销在目前的主流PC设备上,想要流畅运行几乎是不可能的。
2022-09-02 19:52:09
2947
1
原创 刷题笔记。
以前在学校只专注于研究感兴趣的技术,开发一些乱七八糟的项目,几乎没刷过题,现在面试笔试被各种毒打。现在开始亡羊补牢。只记录算法或思路,不记录题目,不间断更新,顺便重拾C++
2022-06-30 21:34:49
648
原创 拦截驱动加载
思路简单粗暴,直接注册一个模块监听,然后当目标驱动加载时hook它的驱动加载函数,直接返回成功,对付一下比较简单的驱动保护效果屡试不爽获取DriverEntryPVOID GetDriverEntryByImageBase(PVOID ImageBase){ PIMAGE_DOS_HEADER pDOSHeader; PIMAGE_NT_HEADERS64 pNTHeader; PVOID pEntryPoint; pDOSHeader = (PIMAGE_DOS_HEADER)ImageB
2021-09-04 15:55:31
1755
原创 Unity 对象池
练习项目时候时常用到,贴在这里一下方便用到时候复制粘贴using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;public class ObjectPool{ static ObjectPool instance; public static ObjectPool Instance { get
2021-07-10 21:26:41
221
2
原创 OpenGL学习笔记(三)应用前两篇所学,画一个能控制移动的彩色矩形
使用WSAD控制,运行效果和代码如下:#include<glad/glad.h>#include<GLFW/glfw3.h>#include<iostream>using namespace std;//顶点着色器const char *vertexShaderSource = "#version 330 core\n""layout (location = 0) in vec3 aPos;\n""layout (location = 1) in
2021-02-11 15:44:42
356
原创 OpenGL学习笔记(二):创建窗口,渲染流水线,VAO,VBO,EBO,shader
文章目录初始化OpenGL创建窗口图形渲染管线顶点坐标输入VBOVAOEBO初始化OpenGL我把glad.c单独放到了一个文件夹(SDK)下,CMakeLists.txt:cmake_minimum_required(VERSION 3.10)
2021-02-10 17:23:45
655
原创 OpenGL学习笔记(一):Linux下环境搭建
文章目录GLFWGLAD下载GLM数学库下载Assimp图形库测试:GLFW首先下载并解压GLFW源码:https://www.glfw.org/然后进入解压完成的目录下sudo apt-get install cmake xorg-dev libglu1-mesa-devcmake ./makesudo make installGLAD下载地址:GLAD然后直接cd includesudo mv * /usr/local/include下载GLM数学库下载地址:glm
2021-02-08 20:50:07
1488
原创 安装配置neovim详细教程
安装配置neovim(系统:deepin)环境配置安装nodejs安装python环境其他安装安装配置neovim安装neovim安装插件管理器安装插件tab补全安装coc.nvim配置C++环境:其他语言配置配色环境配置安装nodejs首先安装nodejs(后面安装coc.nvim要用):官网下载:nodejs下载然后解压到一个目录,我在home目录下新建了一个“软件”目录,创建软链接:sudo ln -s /data/home/ykh/软件/nodejs/bin/node /usr/loc
2021-02-06 22:43:26
22089
4
原创 [VT虚拟化驱动]启用EPT
文章目录前言一、EPT概述二、构建EPT1.思路2.代码实现三、本章代码前言一、EPT概述其实也就相当于r0与r3,在r3层的地址并不是真正对应到内存里的物理地址,而是虚拟地址,需要通过内核里对应的页表来查找才能得到真正的物理地址,但如果加载了VT,在r0层查出来的物理地址也变成了虚拟的,也需要通过一个页表来查得真正的物理地址,也就是EPT,有了EPT机制,就能在一台电脑里运行多个操作系统,就像一个操作系统里运行多个应用程序一
2020-12-05 16:19:22
3570
9
原创 [VT虚拟化驱动]正式启动VT
文章目录前言一、vmlaunch正式开始虚拟化二、使用步骤1.引入库2.读入数据总结前言本章开始真正实现一个最简单的VT框架,当然,只是能跑起来一个VT驱动了,没有并包括EPT,EPT后面再讲提示:以下是本篇文章正文内容,下面案例可供参考一、vmlaunch正式开始虚拟化执行VMLAUNCH指令执行后,就正式进入虚拟化了,再该指令执行之前,得先保存Guest当前的环境,执行完VMLAUNCH后,要恢复Guest的环境,让Guest就像什么都没发生一样,所以需要保存和恢复Guest的各种寄存器的值
2020-12-03 23:25:26
3151
9
原创 [VT虚拟化驱动]初始化VMCS
文章目录前言一些控制信息的字段说明1.基于针脚的vm执行控制信息域2.基于处理器的VM执行控件3.基于处理器的辅助vm执行控制信息域4.VM-EXIT控制域5.VM-ENTRY控制域代码编写工具函数1.用于获取段寄存器的各种信息(后面初始化GUEST区域要用到)2.用于填充各种控制区域3.读取段寄存器,GDT等开始初始化VMCS区域前言这是虚拟化驱动编写过程里最麻烦且最容易出错的部分,需要拦截的大多数功能也是在这里进行定义一些控制信息的字段说明VMCS中包含guest区域和host区域和虚拟机控
2020-11-22 22:07:52
1559
2
原创 [VT虚拟化驱动]VMXON
文章目录引入头文件一、执行VMXON1.文档说明2.代码编写二、退出HOST三、ia32.h引入头文件需要引入一个头文件(ia32.h),里面定义了很多我们需要用到的结构头文件下载地址:https://github.com/wbenny/ia32-doc/tree/master/out只需要ia32.h即可,下载后引入项目中,然后在def.h中包含,网速较慢不方便下载的话可以复制文章末尾的(有一点中文注释)一、执行VMXON1.文档说明31.5 VMM SETUP & TEAR D
2020-11-21 18:08:12
1947
9
原创 [VT虚拟化驱动] 定义类及初始化内存区域
文章目录前言框架整体流程图类的定义初始化内存区域本章代码前言为什么不用C而用C++呢?在单核的情况下,用C还比较方便些,但在多核的情况下,每个核心都需要分配有对应的一个VMX区域,VMCS区域,MsrBitmap区域和栈空间,以及对应的初始化函数,如果使用安装DPC回调的方式在多核情况下进行初始化,只使用同一个初始化函数,当函数被多个CPU核心同时执行,会出现很多意想不到的的错误,我用自旋锁试了一下是依照各种错误,所以果断用C++了,把这些每个核心都需要一份的封装到一个类里框架整体流程图类的定义
2020-11-12 18:38:27
1539
3
原创 [VT虚拟化驱动]安装DPC回调检测CPU对VT的支持
文章目录前言一、驱动基本框架二、安装DPC回调三、检测CPU对VT的支持本章代码def.h:DriverEntry.cpputil.cpp前言对于VT的介绍网上有很多详细的介绍,这里不再赘述,只需要知道它有比操作系统还高的权限,可以利用这一点进行某些操作,如内存隐藏, 无痕HOOK ,MSR HOOK, 调试或者反调试, 这里直奔主题一、驱动基本框架虚拟机设置里虚拟化引擎设置:新建一个空的WDM工程,平台设置为x64平台,右键属性——>Inf2Cat——>Run Inf2Cat设置
2020-11-10 14:11:34
3425
12
原创 springboot整合mybatis,thymeleaf,shiro及基本用法
SpringNBoot整合MyBatis创建项目配置创建项目创建SpringBoot项目,选择SpringWeb,MyBatis Framework,MySQL Driver,然后创建项目配置把资源文件夹下面的application.properties文件后后缀改为.yml(也可以不改,个人觉得.yml比较方便)在资源文件夹下新建mapper文件夹application.yml里填写spring: datasource: url: jdbc:mysql://localhost:3
2020-10-02 14:34:38
484
原创 JavaFX 无边框窗口可拉伸拖曳
自己改了一点,参考自:https://www.cnblogs.com/moonlightL/p/5982679.htmlpublic class Main extends Application { //窗体拉伸属性 private static boolean isRight;// 是否处于右边界调整窗口状态 private static boolean isBo...
2020-05-02 10:13:18
2158
原创 总结一下从高中毕业后到现在的自己(2020.4.25)
这几天一直在完善我的VT驱动, 每天昼伏夜出地生活, 给它加上各种功能. 但遇到了些麻烦, 难以解决. 休息一天吧, 不知道该做什么, 刷刷B站, 看到一个自己关注的UP主发了个视频, 他在自己生日那天给自己的以往做了下总结, 挺励志的, 我也不由地想起了我的以往.如果不是高中图书馆那本书, 我可能并不会接触编程.高中之前, 我的兴趣是化学与生物, 因为感兴趣, 这些上课的时候我都听得特别...
2020-04-25 10:06:20
1492
15
原创 通过导出表和函数名 获取特定进程下模块的导出函数地址
需要的头文件:#include<windows.h>#include<iostream>#include<Psapi.h>using namespace std;获取进程下的模块基址:PVOID GetProcessMoudleBase(HANDLE hProcess, char* moduleName){ // 遍历进程模块, HM...
2020-04-24 03:12:55
2237
原创 win10 x64获取未导出内核函数地址
用Sunday算法进行特征码匹配.h文件://系统信息类typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation = 0, //系统的基本信息 SystemProcessorInformation, // obsolete...delete SystemPerformanceI...
2020-03-18 13:04:03
2253
原创 实战过简单ring3层保护,找游戏加密数据
以前玩过一个叫Zombie Army Trilogy的游戏,感觉挺好玩的,突然想安排一下OK,开始打开游戏,x64dbg附加,发现居然断不下来,下断点断点命中游戏卡死,x64dbg依然显示运行中。。。这游戏居然有反调试。。。貌似DbgPort清零了,调试器接收不到调试信息,但这游戏并没有驱动保护,在ring3层能达到DbgPort清零的效果一般是调用了SetInformationT...
2020-03-12 23:28:16
3404
1
原创 WDF驱动框架,简单IO(METHOD_BUFFERED)
基本框架:#include<ntddk.h>#include<wdf.h>#define IOCTL_TEST CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ALL_ACCESS)#define DEVICE_NAME L"\\Device\\WDF_DeviceName"#define S...
2020-03-10 19:35:38
1474
2
原创 自己实现读写内存API和OpenProcess躲过Ring3层的HOOK(win10 1903)
想躲过ring3层的某些API的HOOK,不想恢复钩子,自己写,百度一搜半天都找不到,只能自己动手了...OpenProcess和ReadProcessMemory和WriteProcessMemory都在KernelBase.dll里NtOpenProcess和NtReadVirtualMemory和NtWriteProcessMemory在ntdll.dll里用IDA进行逆向即可得...
2020-03-01 01:06:46
3316
11
原创 枚举进程,线程,进程模块
#include <ntifs.h>#include <ntddk.h>#include <windef.h>typedef struct _PEB_LDR_DATA { BYTE Reserved1[8]; PVOID Reserved2[3]; LIST_ENTRY InMemoryOrderModuleList;} PEB_LDR_DAT...
2020-02-19 05:13:31
1058
原创 进程隐藏(用摘链的方法)
ring3层跑的程序在ring0层都有一个对应的内核对象,这些内核对象被用一个双向链表连起来,所谓隐藏其实只是把某进程在内核中对应的进程对象从该链中摘掉,让ring3层的API无法找到该链在进程对象下面有:0: kd> dt _EPROCESSnt!_EPROCESS +0x000 Pcb : _KPROCESS +0x2d8 Process...
2020-02-17 23:44:38
1151
原创 ring0层监视进程与线程
项目属性--->链接器---->命令行的其他选项加入 /INTEGRITYCHECK#include <ntifs.h>#include <ntddk.h>VOID CreateProcessNotifyEx( _Inout_ PEPROCESS Process, _In_ HANDLE ...
2020-02-17 23:25:23
614
原创 获取某个进程的所有线程ID和入口地址
因为有个要定位线程头部特征的需要(有些游戏调试器一附加就立马死掉,多半是有个线程在搞鬼,杀掉这个线程就可以正常附加调试了),首先要找到线程入口地址,在网上找了下,发现在获取64位程序的线程信息时,入口地址是错的(64位的地址溢出了),稍稍改动了一下(要编译为64位)#include <windows.h>#include <tlhelp32.h>#include ...
2020-02-14 18:14:10
3323
1
原创 win10 x64中inlineHook SSDT里面的函数
inlineHook的原理:为了方便好理解,一些变量名和函数名在这里使用中文命名,有些编译器不支持中文命名,在这里要注意(我的是VS2019)hook.h:#pragma once#include<ntifs.h>#include<ntddk.h>#pragma intrinsic(__readmsr)//SSDT表typedef str...
2020-02-13 17:12:36
4825
7
原创 win7 x64中寻找SSDT
win32位的SSDT表是导出的,根本不用找.但x64的就不导出了win7x64下:要得到SSDT的地址,首先找到KiSystemCall64的地址,在它的下面就有SSDT的线索找的KiSystemCall64只需要读出MSR(特别模块寄存器)c0000082的值,便是KiSystemCall64的地址:以下使用Windbg调试:3: kd> rdmsr c0000...
2020-01-06 23:24:26
1317
原创 Kali Linux-使用Shellter生成远控木马并进行持久化控制
安装Shellter:apt-get install shellter打开shellter操作模式选择A,PE Target:输入要捆绑木马的软件的目录,这里用putty做实验(必须是32位的程序):选择是否使用隐形模式进入:选择Y选择payload 或 custom:LPAYLOAD选择:1(反弹连接)设置LHOST填控制者的IPLPORT填反...
2019-10-20 21:01:53
7091
11
原创 Sunday算法实现内存快速搜索特征码(支持带问号)
效果图:代码:#include<Windows.h>#include<iostream>#include<vector>#include<time.h>using namespace std;#define BLOCKMAXSIZE 409600//每次读取内存的最大大小BYTE* MemoryData;//每次将读取的...
2019-10-07 15:42:01
10015
12
原创 透视挂原理:透明窗口,画框,画线,绘制文字的实现(C++)
先上效果图:新建一个空项目,根据自己的D3D库路径导入D3D库(这里是用DrectX9,手贱画了三根线,不用理):新建一个预编译.h头文件:#pragma once#include <d3d9.h>#include <d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib,...
2019-10-06 16:21:47
19831
27
原创 写个最简单的植物大战僵尸修改器吧!c和python
效果图:C实现:#include<windows.h>#include<stdio.h>void main(){ //获取游戏窗口句柄 HWND hd = FindWindow(L"MainWindow",L"植物大战僵尸中文版"); DWORD pid; //通过窗口句柄获取进程ID GetWindowThreadProcessId...
2019-10-05 18:55:34
9778
13
C++透视自瞄原理学习.rar
2019-09-03
新特征码工具_驱动读写.rar
2019-08-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人