自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 frida学习

frida学习

2023-02-12 07:06:23 535 1

原创 ue4游戏dump

ue4 dump

2023-02-10 09:39:41 4360 2

转载 unity游戏dump

unity游戏dump

2023-01-27 20:15:04 1350

转载 windows下LIB和DLL的区别与使用

共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数,

2022-05-27 15:20:00 672

原创 Detours内联HOOK

1.Detours文件夹中有所需要用到的lib文件和h文件2.将Detours文件夹拖动到工作目录下3.附加包含目录,这样在添加头文件时就不需要填写目录而是直接可以填写头文件名,VS可以根据附加包含目录知道头文件在工作目录的哪个文件夹里4.在工程里面添加一个筛选器Detours5将工作目录下的detours41x86.lib直接拖动到工程中的筛选器里面。ps:(当然也可以不拖到库文件到工程中,因为这样有时候可能会感觉很混乱。在连接器-输出里面的附加依赖项中添加 detours41x86

2022-05-10 17:20:40 599

原创 C++模板的汇编原理

template<typename ADDRESS>ADDRESS add(ADDRESS pAddr1, ADDRESS pAddr2){ return (ADDRESS)pAddr1 + (ADDRESS)pAddr2;}int main(){ MessageBeep(1); float f1 = 1.11, f2 = 2.22; double d1 = 1.1111, d2 = 2.2222; int i1 = 1, i2 = 2; add(f1, f2); ad

2022-05-06 16:09:56 143

原创 虚函数表和虚函数表指针的汇编分析

1.什么是虚函数?2.虚函数有什么用?3.怎样才产生虚函数表?4.虚函数表存放在什么位置?5.虚函数表长什么样?6.为什么用虚函数实现多态时需要用到指针或者引用,而不能直接赋值?假设有这么一个需求class Creature{ public: int hp; int mp; char* name; void Attack(); void Defend(); void Dead(); Creature(char* name);};class Player:p

2022-05-02 02:02:46 1096

原创 C++类对象调用时的汇编表示

C代码Class.hclass Creature{ public: int hp; int mp; char* name; void Attack(); void Defend(); void Dead(); Creature(char* name);};class Player:public Creature{public: int nSmart; int nPower; void Buy(); Player(char* name);};Cla

2022-05-01 14:38:12 313

原创 汇编下循环对数组访问的分析

C代码DWORD FindRole(PDWORD pRoleArray, int Roleid);static PDWORD pRoleAddrArray=NULL;int main(){ pRoleAddrArray = (PDWORD) malloc(sizeof(DWORD)*8); for (int i = 0; i < 8; i++) { pRoleAddrArray[i] = 0x11111111 * i ; } DWORD role = FindRole(pRo

2022-04-30 17:44:06 595

原创 VS你想干神么

2.3.其他受害者//https://blog.csdn.net/newstarao/article/details/6293159VS:你不写BUG,我就帮你写,我就是BUG的制造机纯恶心人是吧

2022-04-30 00:00:19 128

转载 如何使用WINSCP连接windows服务器

前沿 winscp是一款非常好用的文件传输工具,但往往在windows系统上,使用是SFTP模式会出现无法连接的情况其最主要的原因,是因为windows系统默认没有开启SSH协议 前置准备 在自己的电脑上,下载winscp软件在服务器的主机上,下载OpenSSH软件,这个软件可以直接上我的云盘获得 地址:(提取码:uvxj) 第一步 在服务器上解压下载好的openssh, 并在解压的文件夹内,打开powersell 注:服务器默认是以管理员身份打开,如果没有,则手动使用管理员模式打开 在命令

2022-04-26 00:41:35 6525 2

原创 汇编:循环语句

whilevoid while01(){ int i = 0; while (i<20) { i++; }}i<20:jgei<=20:jgi>20:jlei>=20:jlpush ebpmov ebp,espsub esp,44push ebxpush esipush edimov dword ptr ss:[ebp-4],0cmp dword ptr ss:[ebp-4],14jge 0623_x86_x64_asm.41184

2022-04-25 01:35:06 646

原创 X64下分析调用约定的汇编代码

C代码和X86的一样int _cdecl cd_call(int a1, int a2, int a3, int a4, int a5){ int t_a1 = a1; int t_a2 = a2; int t_a3 = a3; int t_a4 = a4; int t_a5 = a5; return t_a1 + t_a2 + t_a3 + t_a4 + t_a5;}int _stdcall std_call(int a1, int a2, int a3, int a4,

2022-04-24 21:58:35 631

原创 X86下分析四种调用约定的汇编代码

C代码int _cdecl cd_call(int a1, int a2, int a3, int a4, int a5){ int t_a1 = a1; int t_a2 = a2; int t_a3 = a3; int t_a4 = a4; int t_a5 = a5; return t_a1 + t_a2 + t_a3 + t_a4 + t_a5;}int _stdcall std_call(int a1, int a2, int a3, int a4, int a5)

2022-04-24 14:07:37 308

原创 printf的宽窄字符输出的学习笔记

写代码的时候遇到一点问题LPSTR a1 = "abc"; printf("窄字符abc=%s,size=%llu\n", a1,sizeof("abc")); LPSTR a2 = "我是"; printf("窄字符我是=%s,size=%llu\n", a2, sizeof("我是")); LPWSTR a3 = L"abc"; printf("宽字符abc=%ls,size=%llu\n", a3, sizeof(L"abc")); LPWSTR a4 = L"我是"; printf(

2022-04-22 19:49:15 1091 4

原创 清理vs临时文件,优化VS项目大小的代码

REM www.yjxsoft.com 清理项目垃圾文件 //del *.log *.ipch *.aps *.user /sdel *.exe *.dll /sdel *.sdf /sdel *.ilk *.pdb *.exp *.tlog *.lastbuildstate /sdel *.obj *.pch *.idb/spause

2022-04-22 16:25:41 397

原创 git命令学习笔记

git init 把该目录变成git可以管理的仓库git status 查看本地文件更改的状态git add . 添加文件到暂存区。git add [包含相对路径的文件名] 例如 git add abc/123.txt ,意思是仓库下的abc文件夹下的123.txt文件,不要是/abc/123.txtgit rm [包含相对路径的文件名] 在工作区和暂存区删除了一个文件。要删除的文件没有修改过,就是说和当前版本库文件的内容相同。git rm -f [包含

2022-04-15 23:14:46 182

原创 修改MFC程序的图标

1.在项目的资源文件夹下,找到vs的默认的ico图标文件并移除掉(也可以不移除 强迫症)2.右键项目文件夹,点击添加,选择资源®,选中Icon,点击导入,将自己的ico图标添加到项目中3.在以上操作之后,点击后缀名为rc的文件,会在该文件中找到我们添加进去的ico图标资源和之前残留的默认ico资源(仍然删除掉它)可以右键该文件,选择属性,修改该文件的ID为我们想要的名字4.此时编译会出错dwad是默认的ico图标的id名,在MFC工程的代码中使用了这个ID,但现在ID已经被删除了,找到这

2022-04-15 19:54:15 2662

原创 BAT命令-清理VS项目的垃圾文件和优化VS项目大小

REM 清理项目垃圾文件 //del *.log *.ipch *.aps *.user /sdel *.exe *.dll /sdel *.sdf /sdel *.ilk *.pdb *.exp *.tlog *.lastbuildstate /sdel *.obj *.pch *.idb/spause

2022-04-14 21:55:40 510 1

原创 关于编译MFC项目时遇到的问题以及解决的记录笔记

编译MFC项目时遇到的问题严重性 代码 说明 项目 文件 行 禁止显示状态错误 MSB8042 此项目需要带有 Spectre 缓解措施的 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。 解决方式添加以下组件...

2022-04-14 21:21:53 1209

原创 修改Unity代码模板

1.找到unity2.右键unity ,打开文件位置3.定位到\Editor\Data\Resources\ScriptTemplates文件夹下4.修改81-C# Script-NewBehaviourScript.cs.txt文件using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// /// </summary>public

2021-11-20 17:02:11 2445

原创 解决URP资源的材质成洋红色问题

1创建项目创建3D项目(而不是URP项目),原因是URP项目中包含了不需要使用的素材,删除起来比较麻烦,然后在Assets中导入所需要的URP资源包2.安装Universal RP在Window工具栏下打开Package Manager,搜索Universal RP,点击install进行安装。3.创建渲染管线的Pipeline1.点击项目(Project)下的+号创建新的渲染管线,渲染(Rendering) – Universal Render Pipeline – Pipeline As

2021-11-19 00:14:36 7332 1

原创 2020.4 kali 安装

统一记录一下自己安装kali的过程,以免将来遗忘1.首先搜索2020.4的kali镜像推荐阿里云镜像网站下载,如果直接去kali官网得使用科学上网https://developer.aliyun.com/mirror/2.找到相应版本的iso文件kali-linux-2020.4-installer-amd64.iso3.Operating System not found 的解决方式,不采用自动检测,而是手动指定ISO文件的路径4.关于kali的一些关键设置域名设置.直接跳过磁

2021-10-23 15:22:29 600

原创 页表HOOK

hook一个内核函数,不修改API对应的物理页,而是把与API相关的物理页拷贝一份(PTE,PDE,PPE,PXE四个页),然后修改目标进程的页表映射到拷贝的物理页,使目标进程对此API的操作与其他进程分离,让对此API的hook不会影响到其他进程结构体enum{ PhyPage, PT, PDT, PPT, PXT,};typedef struct _PAGE_INFO{ UINT64 PteBase;//页表基址 UINT32 PXE

2021-10-07 01:28:16 1473 3

原创 VS2019环境下的X64汇编

1.定义x64汇编函数在 Source Files 下创建一个*.asm文件,编写以下demo代码:.CODE ;文件开始vt_Add PROC ;函数开始 add rcx,rdx ;参数1与参数2相加 mov rax,rcx ;结果赋值到rax ret ;返回raxvt_Add ENDP ;函数结束END ;文件结束2.调用x64汇编函数EXTERN_C ULONG64 vt_Add(ULONG64 u1, ULONG64 u2);//声

2021-09-08 21:29:12 2357

原创 PsSetCreateProcessNotifyRoutineEx 防多开

这个函数的功能是设置一个回调钩子,该钩子会在进程创建和进程销毁时被调用,钩子由用户提供API格式NTSTATUS PsSetCreateProcessNotifyRoutineEx( PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine, BOOLEAN Remove);NotifyRoutine 是IN,传入用户指定的回调钩子Remove 是IN ,创建回调钩子时传FALSE,创建了肯定需要在

2021-09-06 20:16:42 984

原创 DbgUiRemoteBreakin反调试

DbgUiRemoteBreakin是ntdll提供的用于在目标进程中创建远线程后下软件断点的函数当我们用OD附加调试时,CreateRemoteThread函数在目标程序中创建了一个远程线程,然后在远程线程中调用DbgUiRemoteBreakin函数,DbgUiRemoteBreakin内部调用了DbgBreakPoint函数,DbgBreakPoint函数内部下了一个int 3断点,触发异常让操作系统运行异常处理程序,然后操作系统把控制权交管给调试器ps:DbgUiIssueRemoteBreak

2021-09-02 23:08:22 2110

原创 KdDisableDebugger()反调试

NTSTATUS KdDisableDebugger();剥离内核调试器成功,返回 STATUS_SUCCESS如果并没有内核调试器,返回STATUS_DEBUGGER_INACTIVE如果内核调试器处于阻塞状态返回STATUS_ACCESS_DENIEDKdDisableDebugger函数会判断一个全局变量,当系统不是在调试下启动时,该值为1,在调试下启动时该值被置0,且该值只在操作系统启动时被初始化了一次(推测),当该值为0时,KdDisableDebugger会调用相关函数使内核调试器与操作

2021-09-01 18:37:21 361

原创 win10 x64 内核结构体

nt!_EPROCESS +0x000 Pcb : _KPROCESS +0x2d8 ProcessLock : _EX_PUSH_LOCK +0x2e0 UniqueProcessId : Ptr64 Void +0x2e8 ActiveProcessLinks : _LIST_ENTRY +0x2f8 RundownProtect : _EX_RUNDOWN_REF +0x300 Flags2 : Uint

2021-08-27 06:28:21 971

原创 CheckRemoteDebuggerPresent反调试

# include<Windows.h># include<stdio.h>BOOL CheckDebug(){ BOOL isDebugged; CheckRemoteDebuggerPresent(GetCurrentProcess(), &isDebugged); return isDebugged;}int main(){ while (1) { if (CheckDebug()) { MessageBox(0, L"软件正在被调

2021-08-26 12:40:08 757

原创 CreateMutex防多开

#include <windows.h># include<stdio.h>int main(int argc, char* argv[]){ //初始化临界区全局原子变量 HANDLE MutexHandle = CreateMutex(NULL, FALSE, TEXT("AAA")); //创建互斥体. 信号量为0. 有信号的状态.wait可以等待 DWORD ErrorCode = 0; ErrorCode = GetLastError

2021-08-26 12:38:58 721

原创 保护模式阶段性测试

1.# define _CRT_SECURE_NO_WARNINGS # include<Windows.h># include<stdio.h>void JumpToZero();void hookfunc();int ReadMemory(OUT PVOID buffer, IN DWORD dwAddr, IN DWORD dwLength);DWORD g_KernelValue;DWORD g_PDTIndex;DWORD g_PTTIIndex;DW.

2021-08-21 07:26:29 187

转载 vs2019编写的程序支持xp环境

转载 https://blog.csdn.net/joinpark/article/details/111380604 安装的时候选择如下,在单个组建中选择,由于选项太多,可以使用搜索xp的方法过滤。 安装后可以选择如下的选项,再编译就可以支持xp了。   常见误区:如下第一个框C++桌面程序的 “MSVC141 so017 x64/x86生成工具”这个不是2019的xp支持选项。大家注意这

2021-08-21 00:20:43 1433 1

转载 Win10下VS2019双机调试之调试驱动

转载于 https://blog.csdn.net/m0_48995611/article/details/112211268有现成的写的非常详细就不重复造轮子了ps:1.注意文章字体加深部分,非常重要2.原文bcdefit /dbgsettings打错,改成bcdedit /dbgsettings3.文章黄色部分涉及到的 “注意:Network host name必须为虚拟机的计算机名.”不是Vmware软件左边显示的名称,而是需要在虚拟机内部右键“我的电脑”找到“设备名称”1.虚拟机设

2021-08-09 16:28:52 4334 7

原创 win10虚拟机环境下运行驱动程序

现在大部分win10都是64位的,所以和xp系统运行驱动程序有较大的区别,我们知道64位系统运行32位应用程序是可行的,这是windows系统向下兼容的体现,但是内核态的驱动程序必须区分32位和64位驱动,。32位Windows安装32位驱动,64位Windows安装64位驱动,无法交叉安装。所以现在面临的问题是1.如何安装x64位驱动2.如何配置VS3.如何禁止微软数字签名认证(继vista系统之后的所有64系统都需要微软数字签名认证)4.如何解决DbgPrint 无法在 DebugView 中

2021-08-06 14:02:43 2760

原创 ObRegisterCallbacks的运用

ObRegisterCallbacks()有什么用?继从Windows Vista以后的64位系统都PG(PatchGuard)的存在,所以应用程序不能随意的通过 HOOK SSDT 等方式来修改内核,因为会触发 PatchGuard 保护造成蓝屏。所以现在的64系统的程序通过内核函数ObRegisterCallbacks来实现对自身的保护 。本文不会介绍原理之类的,其内部实现可以使用IDA工具查看其反汇编代码,另外,该函数不能运行在XP环境下,且需要在驱动中调用,应用层的程序是调用不了的,并且,如今的

2021-08-05 18:19:47 5068

原创 VS2019+WDK10编写xp平台的驱动

驱动环境配置好后,编译也能成功,当把sys文件放到driver manager跑的时候遇到一下这种情况,sys能成功register但是无法run肯定是vs环境配置的问题,查找了很多资料,终于解决了最关键的原因是要把 驱动类型从KMDF更改为WDM然后按照其他资料显示的,按照如下配置即可...

2021-08-05 11:22:25 884 1

原创 反调试之IsDebuggerPresent()分析

哪个DLL导出了该函数?查MSDN可知学习一个函数最好的方式是在自己的程序里面调用该函数,并分析自己的程序,我用c写了一个简单的程序,函数不断循环打印“I am running…”,并不断检查是否程序被调试,如果程序被调试,则输出“软件正在被调试”,然后退出如何找到main函数打开OD附加调试...

2021-08-04 13:24:25 839

原创 MFC中StatusBar的使用

Status Bar 状态栏示例:第一步,在VS2019中新建一个MFC项目;第二步,在主窗口头文件中手动添加 StatusBar 类型的成员变量第三步,在主窗口cpp中重写父类继承下来的虚函数OnInitDialog(),并添加以下代码;至此,MFC中使用StatusBar就完成了。...

2021-07-31 09:02:24 563

原创 MFC中ToolBar的使用

ToolBar 工具栏示例:第一步,在VS2019新建一个MFC项目;第二步,右键资源文件,选择ToolBar,点击新建;第三步,自定义三个按钮,可以设置图案,颜色,样式;第四步,因为资源不能像控件一样通过自动生成工具自动添加变量,所以需要手动添加成员变量,在主对话框的h文件中添加CToolBar类型的变量,并引入<afxext.h>头文件第五步,在主窗口cpp中重写父类继承下来的虚函数OnInitDialog(),并添加以下代码至此,MFC中使用TAB控件就完成了。

2021-07-31 08:16:48 1827

空空如也

空空如也

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

TA关注的人

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