自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

鬼手的博客

病毒分析/逆向分析/Windows编程/Windows内核/交流群:1017057661

  • 博客(125)
  • 收藏
  • 关注

原创 PC微信逆向:分析通用设置数组

文章目录前言通用设置切入点分析通用设置数据结构分析通用设置数组随机的数组下标前言微信版本2.8.0.121分析诉求->通过代码实现关闭微信通用设置里的“有更新时自动升级微信"。通用设置切入点这种复选框的设置无非就是一个标志位的问题,分析起来比较简单,中间肯定会涉及到一些数据结构。作为开发者肯定不会把每一个设置选项都单独存放,而是放在一个数据结构里方便管理。首先用CE附加微信在取消勾选状态下搜索0[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jksK

2020-05-15 14:38:14 2169 1

原创 012 分析技能冷却二叉树

文章目录前言技能冷却二叉树获取技能名称总结前言学习完了最常用的数据结构,我们再来分析游戏中其他的功能,尽量将游戏中的所有数据分析完全,为后面的实际应用积累经验。对于RPG游戏来说,技能数据是必不可少的。这次我们就来找技能相关的数据。技能冷却二叉树想要找到技能相关的数据结构,可以有很多突破口,比如技能名称,技能ID,技能冷却时间等等。以技能冷却时间为例,找一下当前的技能数据。首先找到一个...

2020-05-01 12:44:50 499 1

原创 011 数据结构逆向—二叉树

文章目录前言背包数据嵌套结构背包二叉树二叉树分析背包数据结构分析总结前言学习完了链表的数据结构,我们再通过幻想神域了解一下二叉树在游戏中的存储形式。这一次要逆向的数据是背包中的所有物品,为了能将背包中的数据尽量分析完整,这个游戏建议尽量升到20级。会送两个背包扩展券,背包越大数据越多,能够分析到的数据越完整。我这里是有两个背包扩展券。,一个20格扩展卷,一个5格扩展券。背包数据嵌套结构...

2020-05-01 12:35:48 331

原创 010 数据结构逆向—链表

文章目录逆向周围对象链表总结之前我们已经通过人物的血量找到了人物的属性数组,接下来学习一下链表。逆向周围对象链表这一次要找的目标是人物周围的对象链表,包括人物周围的NPC和怪物等等。找这个数据结构的突破口有很多,可以通过人物本身,也可以通过NPC和怪物。这里还是以人物血量为突破口,之前我们已经用人物血量去找到了属性的数组,但是同一个突破口通过不同的访问代码可以逆向分析出不同的数据。和之...

2020-05-01 11:39:34 292

原创 009 数据结构逆向—数组(困难版)

文章目录前言数组逆向通过人物血量查找人物属性调call取对象call内追局部变量逆向加密数组下标分析人物属性总结前言通过之前的分析,我们已经对数组结构有了一个简单的了解,这次就用幻想神域这个游戏来更加深入学习数组。数组逆向通过人物血量查找人物属性以人物血量为切入点,我们要找到所有的人物属性。首先搜索当前人物血量接着通过换装备的方式修改人物血量,最后剩下两个结果,一个是当前血量,一...

2020-04-25 12:10:27 463 2

原创 008 数据结构逆向—数组(简单版)

文章目录前言逆向背包数组一维背包数组二维背包数组数组结构分析总结前言对于游戏逆向来说,核心需求其实就只有两个追踪游戏数据定位游戏功能call对于追踪游戏数据来说,单纯从一个寄存器或者内存往上追踪到这个数据的基址是较为简单的,难点在于如何通过这一个数据,找到整个数据结构。这里先抛出三个问题对于人物背包来说,可以通过背包物品的数量所在的地址追踪到基址,但是怎么通过物品数量找到整个背...

2020-04-20 22:37:35 313 1

原创 007 封包式游戏功能的原理与实现
原力计划

文章目录前言封包式功能的实现步骤定位发包函数三大发包函数重写发包函数线程发包线程发包的形态和特点条件断点筛出心跳包线程发包的传参方式跳出线程发包定位加密封包内容线程发包总结定位明文发包函数定位封包加密call定位封包加密call封包加密call参数分析复制封包加密函数调用函数实现功能前言游戏外挂按制造难度总共分为下面三类:模拟式:通过调用Windows API来控制鼠标键盘等,使游戏中的人...

2020-04-19 20:41:47 480

原创 三步教你手动破解网易云音乐加密

文章目录第一步 缓存歌曲第二步 找到文件第三步 解密文件第一步 缓存歌曲首先打开网易云音乐随便缓存一首需要付费下载的歌曲 比如这一首如果你想要下载是需要付费的第二步 找到文件点开设置->下载设置 找到缓存目录按照修改日期排序 找到符合修改时间的那一项  后缀名为.uc的最大的文件 就是加密过后的文件 另外一个应该是歌词文件(在

2020-04-17 22:10:55 34063 26

原创 游戏检测的对抗与防护艺术

文章目录前言通过send函数定位吃药call变量检测构造检测程序处理变量检测call的检测原理查找检测变量变量检测处理堆栈检测堆栈检测原理 基于本地堆栈检测原理 基于服务器处理一层堆栈检测处理多层堆栈检测CRC检测什么是CRC检测构造CRC检测处理CRC检测数据检测数据检测原理构造检测程序数据检测处理总结前言从游戏外挂的利用角度来看,外挂的行为无非有如下两种:修改游戏的关键数据和代码:属于...

2020-04-11 20:45:58 890 1

原创 005 定位控件输入call

文章目录什么是控件输入call定位控件输入call定位字符长度通过字符长度定位控件输入call什么是控件输入call当我们想要在游戏里进行喊话和聊天的时候,需要在游戏内置的控件里输入相应的内容,这个往控件输入内容的call就叫控件输入call。定位控件输入call以游戏的账号密码输入框为例,来找这样一个控件输入框。当我们在输入字符的时候,这个call会在内部改变当前的字符长度,字符长度就可...

2020-04-11 14:36:02 306

原创 004 两种方法找寻路call

文章目录关于寻路call通过参数找寻路callCE搜索寻路目的地坐标通过参数定位寻路call寻路call参数分析寻路call代码测试寻路状态找寻路call搜索寻路标志位通过寻路标志位找寻路call关于寻路call寻路call在大部分的游戏里都是存在的,游戏的策划为了用户体验,一般都会自带寻路的功能,可以一键自动让人物到目的地。但是也有一些游戏不包含寻路call,那样的游戏就需要我们去找一些地...

2020-04-11 14:34:31 817

原创 003 通过内存关系找万能按键call

文章目录什么是万能按键call切入点CE搜索背包状态通过内存关系找万能按键call万能按键call参数分析总结什么是万能按键call当我们在游戏中敲击键盘的按键时,游戏会对键盘事件会做出响应,去执行某些功能。以口袋西游为例,按B键会打开人物背包,通过B键打开背包的这个call就是万能按键call。只要找到这一个call,就相当于找到了所有的按键call,因为剩下的所有的快捷键功能都会走这一...

2020-04-11 14:17:23 615 1

原创 002 通过send断点分析功能call

文章目录游戏发包流程分析吃药call分析换装备call总结游戏发包流程对于网络游戏来说,发送数据包是必不可少的一个环节,无论是走路还是喊话或者是其他功能都需要通过发包函数向服务器发送数据包。以技能call为例,整个流程大致如下:接收到用户消息(键盘按下技能快捷键)调用技能call调用技能call2调用技能call3组装数据包对数据进行加密send发包技能call会有很多个...

2020-04-11 14:14:33 401

原创 001 从人物血量学习数据查找

文章目录前言游戏选择与环境搭建查找人物血量查找血量基址第一条线(简单)第二条线(一般)第三条线(困难)总结前言本系列文章旨在从零开始学习游戏辅助的工作流程和开发方法,了解游戏背后的攻防对抗手段,重点侧重数据和call的追踪查找。侧重方向在于学习整个分析过程以及思路方法,最终实现的效果和游戏不是关心的重点。涉及到的技术有:windows API Hookdll注入汇编语言软件逆向...

2020-04-11 14:10:44 802 3

原创 编译器扩展SEH

文章目录编译器扩展的SEH为什么需要编译器扩展的SEH编译器支持的SEH过滤表达式try_except的实现细节手动挂入链表自动挂入链表_try_except嵌套重复拓展的_EXCEPTION_REGISTRATION_RECORD结构体scopetable成员分析try_finally编译器扩展的SEH为什么需要编译器扩展的SEH之前我们已经了解过SEH的异常处理流程,SEH的处理流程实...

2020-02-16 18:25:21 243

原创 VEH和SEH

文章目录VEHKiUserExceptionDispatcher函数分析代码实现添加VEH异常处理函数VEH异常的处理流程SEHExceptionListRtlDispatchException函数的执行流程代码实现添加SEH异常处理函数SEH异常的处理流程VEH当用户异常产生后,内核函数KiDispatchException并不是像处理内核异常那样在0环直接处理,而是修正3环EIP为KiUs...

2020-02-16 18:23:57 715 1

原创 用户层和内核层异常的处理流程

文章目录内核层异常的处理流程用户层异常和内核层异常KiDispatchException函数详解RtlDispatchException函数的执行流程用户层异常的处理流程用户异常的处理流程内核层异常的处理流程之前已经了解过异常处理机制的执行流程:异常记录 异常分发 异常的处理。这次我们学习一下内核异常的分发与处理。用户层异常和内核层异常异常可以发生在用户空间,也可以发生在内核空间。无论是C...

2020-02-16 18:19:14 296

原创 CPU和软件模拟异常的执行流程

文章目录CPU异常记录异常的分类CPU产生的异常软件模拟产生的异常CPU异常的处理流程CommonDispatchException函数分析总结模拟异常记录模拟异常的执行流程RaiseException函数分析KiRaiseException函数分析总结异常产生后,首先要记录异常信息(异常的类型 异常发生的位置等),然后要寻找异常的处理函数,我们称为异常分发,最后找到异常处理函数并调用,我们称为...

2020-02-16 18:15:44 190

原创 APC机制详解

文章目录APC的本质APC队列APC结构APC相关函数KiServiceExitKiDeliveApc备用APC队列ApcState的含义挂靠环境下的ApcState的含义其他APC相关成员ApcStatePointerApcStateIndexApcStatePointer与ApcStateIndex组合寻址ApcQueueableAPC挂入过程KAPC结构挂入流程KeInitializeApc...

2020-02-15 12:45:23 1473

原创 进程线程007 进程挂靠与跨进程读写内存

文章目录进程挂靠进程与线程的关系线程与进程如何关联为什么需要ApcState.ProcessCR3的值可以随便改吗分析NtReadVirtualMemory函数总结跨进程读写内存跨进程操作NtReadVirtualMemory流程解析进程挂靠进程与线程的关系一个进程可以包含多个线程一个进程至少要有一个线程进程为线程提供资源,也就是提供CR3的值,CR3中存储的是页目录表的基址,CR3确定...

2020-02-12 20:39:41 360

原创 进程线程006 Windows线程切换-线程优先级

文章目录内容回顾调度链表如何高效查找如果没有就绪线程怎么办内容回顾之前我们已经了解过,有三种情况会导致线程切换:当前线程主动调用API:API函数–>KiSwapThread–>KiSwapContext–>SwapContext当前线程的时间片到期:KiDispatchInterrrupt–>KiQuantumEnd–>KiSwapContext–>...

2020-02-12 20:36:53 104

原创 进程线程005 SwapContext函数分析

文章目录线程切换与TSS内核堆栈内核堆栈结构调用API进零环SwapContext代码分析线程切换与FSSwapContext代码分析SwapContext的其他问题SwapContext有几个参数 怎么判断出来的?SwapContext在哪里实现了线程切换?0环的ExceptionList是在哪里备份的线程切换与TSSSwapContext这个函数是Windows线程切换的核心,无论是主动切...

2020-02-12 10:00:27 253

原创 进程线程004 Windows线程切换的三种方式

文章目录主动切换(调用API)KiSwapContext函数分析哪些API调用了SwapContext函数总结时钟中断切换如何中断一个正在执行的程序系统时钟时钟中断的执行流程总结时间片管理1.时间片到期什么是时间片?时间片什么时候发生改变?CPU时间片到期了如何处理?CPU时间片总结2.存在备用线程总结主动切换(调用API)之前我们已经学习了模拟Windows线程切换的代码,里面用于线程切换的...

2020-02-12 09:49:16 446

原创 进程线程003 模拟线程切换

文章目录示例代码关键结构体调度链表初始化线程堆栈线程切换被动切换主动切换线程调度总结之前我们已经了解过线程的等待链表和调度链表,为了更好的学习Windows的线程切换,我们要先读一份代码示例代码ThreadSwitch.h#pragma once#include <windows.h>#include "stdio.h"//最大支持的线程数#define MAXGMT...

2020-02-10 10:53:23 185 1

原创 进程线程002 等待链表 调度链表

文章目录前言等待链表33个链表调度链表版本差异总结前言进程结构体EPROCESS(0x50和0x190)是2个链表,里面圈着当前进程的所有线程。对进程断链,程序可以正常运行,原因是CPU执行与调度是基于线程的,进程断链只是影响一些遍历系统进程的API,并不会影响程序执行。对线程断链也一样,断链后在Windbg或者OD无法看到被断掉的线程,但并不影响线程执行。等待链表线程有三种状态:就绪...

2020-01-01 13:40:48 190

原创 进程线程001 进程线程结构体和KPCR

文章目录前言EPROCESSKPROCESS主要成员EPROCESS其他成员ETHREADKTHREAD主要成员介绍ETHREAD其他成员介绍KPCRKPCR介绍_NT_TIB主要成员介绍KPCR的其他成员介绍KPRCB成员介绍KPRCB成员介绍前言进程线程的知识点很多,如果我们想了解问题的本质,就要从一些关键的结构体学起,先来介绍一个与进程密切相关的结构体EPROCESS每个进程在零环都...

2019-12-26 21:33:05 238

原创 系统调用004 SSDT

文章目录前言KeServiceDescriptorTableSSDTSSDT Shadow前言之前我们了解到通过KTHREAD结构体0xE0的位置可以找到系统服务表,这个位置是我们通过逆向得出的。实际上,WIndows提供了一个导出的全局变量,通过这个导出的全局变量,我们就可以直接访问系统服务表。KeServiceDescriptorTable用IDA打开ntkrnlpa.exe,在导出表...

2019-12-23 22:02:20 139

原创 系统调用003 系统服务表

文章目录前言SystemServiceTable 系统服务表系统服务表在哪判断调用的函数在哪个表API函数的调用过程前言我们现在已经知道API怎么从三环进入零环,从三环进零环需要带两个寄存器,分别是eax和edx。eax保存的是系统的服务号,edx保存的是三环的esp,通过esp可以找到三环的参数。这次要解决的问题是如何通过eax找到零环的函数,零环的函数是怎么被调用的,并且零环的函数执行的...

2019-12-22 17:09:50 117

原创 系统调用002 KiSystemService函数逆向分析

文章目录前言保存现场_KTRAP_FRAMEKRPCExceptionList_KTHREAD结构体先前模式抬高堆栈判断当前权限更新_KTRAP_FRAME保存三环的寄存器环境判断调试状态前言之前我们详细了解了API从三环进到零环的过程,API会通过两种方式进入到零环,如果通过中断门的方式进入零环,最终会进入到KiSystemService这个函数。接下来就来分析KiSystemService...

2019-12-22 14:21:28 310

原创 系统调用001 API从三环进零环的过程

文章目录前言逆向分析ReadProcessMemoryNtReadVirtualMemory_KUSER_SHARED_DATASystemCall通过int 0x2E中断门进入零环通过sysenter快速调用进入零环总结总结前言在三环操作系统提供了各种API,这些API实际上只是一个暴露在三环的接口,真正的功能实现部分,最终都是要进到零环。逆向分析ReadProcessMemory###...

2019-12-21 17:43:34 446

原创 [保护模式]PAE模式

文章目录PAE模式 2-9-9-12分页非PAE模式为什么是10-10-12PAE模式为什么是2-9-9-12总结PDPTE结构PTE结构PTE结构XD标志位(AMD中称为NX,即No Excetion)PAE模式 2-9-9-12分页非PAE模式为什么是10-10-12先确定了页的大小4K,所以后面12位的功能也就确定了。2的12次方为4096,也就是4KB。12位正好可以索引到每一个物...

2019-12-11 23:12:16 284

原创 [保护模式]非PAE模式

文章目录PAE 物理地址扩展线性地址 有效地址 物理地址CR3PDE/PTE物理页的属性通过线性地址访问PDT和PTT指向PDT的线性地址 0xC0300000总结指向PTT的线性地址 0xC0000000/C0001000总结访问PDT与PTT公式总结PAE 物理地址扩展线性地址 有效地址 物理地址如下指令:mov eax,dword ptr ds:[0x12345678]这个地址如...

2019-12-09 22:30:52 99

原创 [保护模式]任务段

文章目录TSS什么是TSSTSS的作用如何找到TSSTR寄存器读写将TSS段描述符加载到TR寄存器构造TSS段描述符修改TSSJMP 访问代码段JMP 访问任务段JMP FAR和CALL FAR访问任务段的区别TSS切换实验示例代码构造段描述符填充CR3TSS什么是TSSTSS是一块内存,大小为104字节,结构如图所示:结构体如下:typedef struct TSS { DWORD...

2019-12-04 21:16:48 177

原创 [保护模式]中断门

文章目录要点回顾中断门IDT中断门描述符中断门实验示例代码构造中断门描述符修改IDT表中断现场中断返回为什么会PUSH EFLAGS寄存器调用门和中断门的区别要点回顾执行调用门的指令:call cs:eip。其中cs是段选择子,包含了查找GDT表的索引。但当CPU遇到了如下指令:int [index],查询的却是另外一张表,这张表叫IDT中断门IDTIDT表全称为中断描述符表,包含三种描...

2019-12-01 19:43:17 204

原创 [保护模式]调用门

文章目录调用门调用门执行流程调用门描述符调用门实验无参调用门示例代码构造调用门修改GDT表执行流程中断现场有参调用门示例代码构造调用门修改GDT表中断现场总结调用门调用门执行流程CALL FAR的指令格式:CALL CS:EIP(EIP是废弃的)执行步骤:根据CS的值 查GDT表,找到对应的段描述符,这个描述符是一个调用门在调用门描述符中存储另一个代码段的段选择子选择子指向的段 段...

2019-12-01 16:24:42 275

原创 [保护模式]段间跳转和跨段跳转

文章目录段间跳转段寄存器段间跳转段间跳转的执行流程1.段选择子拆分2.查表得到段描述符3.权限检查4.加载段描述符5.代码执行总结跨段跳转短调用长调用跨段不提权跨段提权总结段间跳转代码跨段,本质就是修改CS段寄存器段寄存器段寄存器有下面几个:ES CS SS DS FS GS LDTR TR。除了CS以外,其他的段寄存器都可以通过MOV LES LSS LDS LFS LGS指令进行修改。...

2019-12-01 13:38:20 379

原创 Windows内核实验005 Inline Hook

文章目录准备工作寻找Inline Hook的返回地址编写代码动态变化的返回地址JmpTargetAddrInline Hook基本框架示例代码实战HOOK KiTrap01无需计算偏移的Inline Hook方法示例代码准备工作寻找Inline Hook的返回地址假设我们现在要HOOK KiFastCallEntry这个内核函数,让所有的程序在进入零环之前先跳到我们自己的代码。但是会出现...

2019-11-17 15:18:17 240

原创 Windows内核实验004 API调用

文章目录完善代码内核API调用修复一个潜在问题复现问题完整代码前面几次实验我们已经完成了一个三环的程序调用零环API的必要条件。提升到零环权限使fs指向KPCR完善代码这次我们去掉之前的死循环代码,并且将函数地址写入到IDT表项,在虚拟机中运行一下程序,看看会有什么结果。这里他抛出了一个内存访问异常。原因在于我们修改了fs寄存器之后,在iretd指令返回三环的时候,系统不会自动...

2019-11-16 20:43:28 138 2

原创 Windows内核实验003 再次回到中断

文章目录两个实验死循环开启中断后的死循环KiFastCallEntry调用零环API的两个条件分析KiFastCallEntry什么是KPCR完善代码完整代码之前的实验我们已经实现了从三环到零环的提权,但是提权不代表能正常调用内核函数。接下来我们要实现的一个事情就是在我们的代码里正常调用内核的函数。还是接着用上次的代码,这一次我们先来做两个实验。两个实验死循环首先用windbg连上虚拟机...

2019-11-16 15:10:25 105

原创 Windows内核实验002 中断现场

文章目录如何获取中断现场环境中段现场环境观察中断现场堆栈环境观察中断现场的寄存器环境段选择子段寄存器结构变化的段寄存器的具体含义遗留问题:SS段寄存器和栈顶指针来自于哪?什么是TSSTSS的工作细节中断提权的任务切换过程实验代码上一课我们已经实现了利用中断提权的方式让自己写的函数拥有了零环的权限,但是为了更方便的写零环代码。我们还需要搞清楚中断现场的上下文环境,什么资源可以被使用,什么资源不能被...

2019-11-15 23:04:15 136

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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