- 博客(179)
- 资源 (4)
- 收藏
- 关注
原创 VT虚拟化框架编写
学习VT相关的知识,需要具备WIN32基础和内核相关的知识,包括Windows段机制,页机制等等,VT里面都会有所涉及,也就是得把Windows编程和驱动基本通关,新手建议劝退。整个VT的知识结构有大量的新的概念,新的寄存器,新的指令还有各种标志位,初次学习VT建议结合代码来理解相关的理论基础,重点在于梳理整个VT的流程,不要深究具体的某个细节。整个流程走完之后就有了阅读别人代码的能力,等实际应用的时候再去查阅相关资料补齐技术细节的部分。我的笔记,很多能省的基本都省掉了,只把整体必须的流程整理出来。
2023-02-11 23:08:16
3554
原创 019 自动任务功能的设计和实现
文章目录任务详情的设计任务表的设计TaskManager类自动接任务自动完成任务自动任务最后的总结之前我们已经完成了自动打怪,自动技能和自动吃药的功能,这一次我们来完成自动任务的功能。自动任务的难度要比前三个高很多,涉及到要处理的细节也很多,我这里写的也不是百分百完美的,只是提供一个基本的思路,如果想要实现一个完美的自动任务的脚本,还需要花时间慢慢完善。首先新建一个类,命名为TaskManager任务详情的设计所谓的自动任务,就是将角色从1级到满级所有的任务全部的数据,记录到一张表。然后挨个遍历并执
2022-05-03 12:22:21
1179
1
原创 018 打开NPC交接任务功能分析
文章目录打开NPC交任务接任务打开NPC来到明文封包call头部,点击NPC,然后断下。这里最好新建一个1级的小号,去分析,这样周围没有其他玩家会少很多干扰项。返回上层,这个call应该就是我们要的选择NPC的call但是我们再次点击NPC时,发现这个call并不断,那么说明这个call并不是选择NPC的call,可能是选怪call或者其他的选择call这个call的作用应该是点击之后将选择的NPC在上方出现一个血条。那么我们应该在这个出现血条的状态下,再去点击NPC此时会返回到一个c
2022-05-01 12:17:54
1435
原创 017 寻路画线功能分析
文章目录定位走路call定位寻路点地图ID和名字数据寻路点遍历定位走路call首先来到明文发包call头部下断返回上层,这一层对坐标进行了加密,我们跳过这个位置再返回上层来分析这个call,最后一个参数r12d,是一个标志位,0代表走路,1代表跑步rcx是一个基地址r9是目的地坐标r8是角色自己的坐标。最后一个edx就是角色对象+0xA84的值。这样的话走路call就分析完成了定位寻路点之前我们已经找到了走路call,但是测试了之后发现只能走一小段距离。如果我们想要实现寻路
2022-04-24 10:46:49
1514
原创 016 可接任务遍历(链表+二叉树)
文章目录可接任务遍历可接任务ID可接任务链表数据整理可接任务属性数据整理可接任务遍历首先搜索一下任务名字找到当前可接任务的地址然后搜索上一层偏移对这个地址下访问断点点击全部追踪,此时会刷新右侧的界面,让断点断下[rbp]就是我们要追的任务名字,但是这里可以直接跳过追踪的过程直接来到第三层返回地址,往上翻来到任务名字库的地方。任务名字库的可接任务和已接任务都会经过这个地方,但是返回的时候,返回的位置是不一样的。可接任务ID这里继续追任务ID->ediedi来源于
2022-04-18 21:59:40
1372
原创 015 已接任务链表和任务库二叉树遍历
文章目录任务名字库已接任务对于游戏的任务数据来说,分为三大块,已接任务,可接任务和任务库。对于任务数据来说,一般都是从名字入手任务名字库首先来找任务的名字库从任务名字入手直接搜索名字,然后把中间的这一块连续地址的任务名字拉下来。这一块很明显就是属于任务库里的内容,只要下访问断点,就能追到相关的数据结构在苏醒一的地址下断,然后点开任务面板,点击全部追踪此时断点断下返回上层,这里要追rcx再返回上层,这里要追r8,得到下面的偏移rsi+0x74rsi来源于rdx返回上
2022-04-11 11:32:23
1327
原创 014 怪物过滤的设计和实现
文章目录怪物过滤的设计之前我们已经完成了自动打怪,自动技能和自动吃药的功能。接下来需要实现自动任务。那么现在就会遇到这么一个问题,大部分的任务都是指定去打某些怪物,但是我们的自动打怪都是默认攻击最近的怪物,这里就需要用到怪物过滤的功能了。怪物过滤的设计新建一个类,命名为MonsterFilter//过滤的列表vector<wstring> m_FilterList;首先准备一个过滤的怪物列表,把不需要攻击的怪物放到这个列表里 。//攻击的列表vector<wstring&
2022-04-05 22:42:37
1243
3
原创 013 自动吃药功能的设计和实现
文章目录功能设计药品表设计代码实现补充之前我们已经完成了自动打怪和自动技能的功能,但是会存在一个问题,当技能释放多了以后,MP就不够了。这个时候我们就需要通过自动吃药的功能,给前两个功能持续输出动力。功能设计自动吃药的逻辑和自动技能的逻辑思想一样,都是通过建表的思想,判断各种条件,筛选出当前最适合的一个药品,然后调用吃药call。现在假设有三种药药1 回血100 1级药2 回血500 10级药3 回血1000 20级当角色在1-10级的时候只需要使用药1即可;在10-20级的时候,优先使用
2022-03-30 17:17:47
1570
1
原创 012 背包二叉树遍历分析和代码编写
文章目录背包属性遍历物品名字库遍历数据整理代码编写背包属性遍历[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mmv8DqwV-1645430806268)(012 背包二叉树遍历分析和代码编写.assets/1641096682839.png)]从物品数量入手,搜索2字节筛选出唯一的值下两字节的访问断点,鼠标移动到物品上面,断点断下物品数量=r14+0x10这里就能得到一个+0x10的偏移。然后记录下每层的返回地址r14来源于r9r9来源于rsi
2022-03-25 19:48:09
2113
1
原创 011 吃药call功能分析和代码编写
文章目录定位吃药call代码编写定位吃药call在编写自动吃药功能之前还需要两个数据,一个是吃药的功能call,另一个是当前的背包遍历,我们先来找吃药call。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V0i3dHnw-1645430627467)(011 吃药call功能分析和代码编写.assets/1642770885951.png)]首先来到明文封包call头部吃药让断点断下返回上一层,这一层是明文的发包call,继续返一层到功能call这里就是
2022-03-22 10:23:08
2316
原创 010 自动技能的设计和实现
文章目录自动技能的设计技能表的设计初始化全局技能表获取最优技能自动技能的设计首先新增一个技能管理类。我们先说最简单的自动技能的逻辑,实际上就是让玩家自己将技能设置好,然后挨个释放技能。这种逻辑写起来并不复杂,只需要将所有的技能数据全部放到容器里,然后挨个释放即可。在这个基础上,可以再增加一些逻辑,例如有一部分技能是回血技能,那么我们就去判断当前的人物血量,只有当血量到一定的阈值才进行释放。技能表的设计接着我们来设计一套自己的选技能的逻辑。首先设计一个技能详情的结构体//技能使用详情stru
2022-03-19 10:34:06
917
原创 009 自动打怪功能的设计和实现
文章目录界面代码流程设计取最近怪物自动打怪界面代码[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pY3AZ993-1645430370274)(009 自动打怪功能的设计和实现.assets/1642605046746.png)]首先新增一个复选框,绑定控件变量和按钮事件,然后在按钮事件添加如下代码//自动打怪void MainWnd::OnBnClickedCheck1(){ static HANDLE hThread = 0; if (m_Auto_At
2022-03-15 18:17:25
2572
1
原创 008 释放技能call分析
文章目录释放技能分析定位普通攻击call数据整理代码编写释放技能分析接着我们需要拿到释放技能的数据首先来到明文发包call头部释放技能让断点断下此时第一次返回的call是选怪的封包call。所有的传奇类的游戏,都需要先选中怪物,然后在走近怪物,最后攻击我们在人物打怪的中途断下,此时返回的第一层地址才是技能call。这一层的call被加密了。我们需要返回到第二层。| mov dword ptr ss:[rsp+0x30],eax | rsp+0x30 计
2022-03-13 10:44:44
2407
原创 007 定位明文封包call
文章目录明文封包call的作用定位发包函数定位线程发包跳出线程发包定位喊话callTip明文封包call的作用在网络游戏中,客户端和服务器的通信基于一系列的数据包。每个数据包都类似于一条指令,客户端和服务器在这个系列指令中完成指定动作。客户端要与服务器进行通信,必须调用下面的三个发包函数发送数据包send();sendto();WSASend();那么我们只要在这三个函数下断点,然后进行堆栈回溯分析,就能准确定位关键的函数调用链。在这条链上,快速排查出需要的功能call。明文封包call的
2022-03-10 20:55:11
2359
原创 006 技能数组分析和代码编写
文章目录技能遍历技能名字数据整理代码编写现在我们已经有了人物的数据和周围对象的数据,还差一个技能数据和释放技能call,就可以完成自动打怪的功能。接着我们来找技能遍历的数据技能遍历以技能的当前经验为突破口直接搜索当前经验值筛选得到唯一的一个数值下访问断点,让断点断下,此时[rax]就是我们要追的数值[rax]rax来源于上面的call这个call传入了一个技能ID和一个基地址作为参数,我们进入call内追rax的来源经过这三个步骤rax变成了[rax*10+rdx+4]
2022-03-07 18:39:20
933
1
原创 005 周围遍历二叉树分析和代码编写
文章目录周围遍历分析定位角色名字偏移玩家名字偏移NPC名字偏移数据整理代码编写所谓的周围遍历,其实就是人物附近所有的怪物 NPC 和玩家信息,拿到了这些数据,我们就可以实时获得当前人物对象周围有哪些数据。对于编写自动打怪来说,需要的是周围的怪物的数据,ID 名字血量坐标等等。周围遍历分析首先从怪物的血量入手直接搜索血量然后筛选出唯一的值对血量下访问断点,断在了我们之前找人物血量的地方[rax+0x65C]+0x1ACrax来源于rbxrbx来源于rcxrcx来源于rax,再进
2022-03-04 20:51:49
1737
1
原创 004 人物数据查找和代码编写
文章目录角色血量基址查找分析角色其他属性分析角色名字搜索角色坐标数据整理代码编写接着我们来开始找游戏数据,以编写自动打怪为目标,找齐这个功能所需要的所有的数据。第一个需要用到的数据就是角色属性。角色血量基址查找直接搜索当前人物的血值修改血值之后再次扫描接着我们修改第二个数值,然后打开角色属性。发现第一个数值也会跟着修改,说明第一个数值的来源是第二个地址对这个地址下内存访问断点,断点断下。[rax+0x1AC]是人物血量,这里就可以获得人物血量的两层偏移[[rsi+0x65C]+0x1A
2022-03-02 10:01:59
1503
2
原创 003 辅助框架的代码实现
文章目录StuCPublic公共函数MemOper 内存操作GlobalData 全局数据接着上一篇文章,我们来聊关于整个辅助框架的代码实现Stu按照常规的思路,我们来构想一下接下来的开发过程。首先我们需要找到人物的数据,然后编写代码的时候设计一个人物数据的结构体;接着周围遍历的数据,又要设计一个周围遍历的结构体;后续用到每一个新的数据,都要设计一个结构体来存放。等写了两三个游戏以后就会发现,很多代码都在重复写。那么这就引出了一个数据管理的问题,怎么样用最高效的方式去管理这些数据。其实很多对象有一
2022-02-28 09:54:05
936
原创 002 辅助框架的设计
文章目录新建MFC项目辅助框架设计小结如果你大概了解过游戏引擎的概念,就会知道 游戏引擎是指一些已编写好的核心组件。为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。游戏引擎有一套通用的框架可以复用,那么游戏辅助当然也有。新建MFC项目首先新建一个MFC的项目,命名为GamePluginFrame。新建一个对话框资源然后添加一个窗口类。记得将项目属性设置为x64,因为传奇永恒是64位的游戏。然后在MFC项目的InitInsta
2022-02-25 10:56:45
1355
原创 001 环境准备
文章目录前言学习目标游戏选择前置知识环境准备游戏数据准备前言这个系列的文章会带领大家从零开始完成一个完整的游戏辅助的设计,整个过程包括所需要游戏数据的查找分析,和代码编写。最后会带大家完成一个具有自动打怪,自动选择技能,自动吃药,自动任务的游戏辅助,并且整个游戏辅助的代码可以作为一套框架套用到任何一个游戏上面。学习目标完成一个具有自动打怪,自动选择技能,自动吃药,自动任务的游戏辅助游戏选择对于一个新手来说,选择一个适合入门的游戏至关重要。个人认为需要考虑下面几个因素:游戏反调试和检测相对弱
2022-02-24 23:30:00
845
原创 Android之Frida框架完全使用指南
文章目录Frida简介环境搭建python安装与虚拟环境配置Frida安装配置代码提示Server环境配置Frida Hook执行HOOKJava层hookHook普通方法重载方法构造方法修改类字段hook内部类和匿名类枚举所有类和方法hook动态加载的DexClassNative层hookhook有导出函数hook无导出函数Frida简介Frida是一款基于Python + JavaScript 的hook框架,本质是一种动态插桩技术。可以用于Android、Windows、iOS等各大平台,其执行脚
2021-10-20 22:00:46
8551
17
原创 Android之Xposed框架完全使用指南
文章目录Xposed环境搭建Xposed简介Xposed原理Xposed的安装Xposed插件开发Xposed插件编写流程Xposed开发之Hook构造函数相关API无参构造函数的hook有参构造函数的hook实际效果Xposed开发之修改属性相关API修改静态字段和成员字段实际效果Xposed开发之hook一般函数相关APIhook一般函数实际效果Xposed开发之主动调用函数相关API调用静态函数调用成员函数实际效果Xposed开发之加壳APP处理实际效果Xposed指纹检测Xposed环境搭建Xp
2021-10-17 19:41:22
7169
原创 VMP分析之VMP2.13插件化分析(四)
文章目录Zeus插件相关介绍初始化Key并解密加载操作码解密操作码取handler解密handler进入handler保存堆栈指令流解密KeyVMP分析插件相关介绍VM分析插件的使用插件化分析VM代码VM指令集说明FKVMP相关介绍使用方法VMSweeper相关介绍使用方法Zeus插件相关介绍开发者: ximo更新时间:2012-1可以分析VM的基本信息,包括解析VM入口信息及handler名,大致是阉割版fkvmp(无解析流程功能)可以自动脱壳保护的壳,包括IAT,资源保护,heap ant
2021-10-10 15:55:45
1400
2
原创 VMP分析之VMP2.13流程分析(三)
文章目录VMP2.X版本特点VMP2.13加壳VMP2.13代码分析进入VM虚拟机保存堆栈保存eflags和edx保存ecx和edi保存ebx保存eax保存ebx ebp和esiVM解码循环解密指令流key解密操作码取加密过的handler解密handler解密操作数执行handler功能VMP2.13流程总结VMP2.X版本特点2.X版本的VMP相对于1.0版本来说有下面的变化自我膨胀,增加了大量混淆指令VM_Context的存放方式由内存改为栈,vmp1区段也没有了有专门分析插件,可以帮助分
2021-10-10 15:50:28
940
原创 VMP分析之VMP1.09虚拟化架构分析(二)
文章目录示例代码VM完整流程分析VM解码循环保存寄存器环境压入EBP和偏移执行函数恢复寄存器环境总结示例代码示例代码如下:#include "stdafx.h"#include <Windows.h>int Calc(int a,int b){ return a + b;}int main(int argc, char* argv[]){ Calc(2,3); getchar(); return 0;}同样用VMP1.09对程序进行加壳,只对两句代
2021-10-10 15:46:28
580
原创 VMP分析之VM解码循环与基本架构(一)
文章目录示例代码VMP区段概览VM基本流程跟踪步入虚拟机解密操作码取handlerVMP解码循环保存寄存器环境总结->VM寄存器的基本架构示例代码接下来通过一个简单的Demo来大概了解下VMP代码的整体流程,示例代码如下#include <windows.h>int Calc(int a, int b){ return a + b;}int main(){ Calc(2, 3); system("pause");}这里只对Calc函数中的两条汇编指令进行V
2021-10-10 15:42:54
2462
原创 020 Android之so文件动态调试
文章目录ELF文件格式查看工具so文件加载时的函数执行顺序so文件动态调试so文件调试技巧使用ida动态调试的那些坑进程显示不全illegal segment bitnessmore than one special register presentadb安装强制应用App以32位运行ELF文件格式查看工具和PE文件类似,比PE文件简单,我们可以用NDK中提供的一个工具readelf去查看ELF文件主要表信息目录:D:\Android\sdk\ndk-bundle\toolchains\x86-4.
2021-10-02 21:12:21
1794
1
原创 019 Android加固之APK加固的原理和实现
文章目录前言加载Activity遇到的问题APK的启动过程替换ClassLoader流程获取ActivityThread类对象获取AppBindData类对象mBoundApplication获取LoadedApk类对象info获取info对象中的ClassLoader设计傀儡dex文件手工加固APK代码实现APK加固实现步骤总结前言动态加载dex之后,我们会想说,能不能将整个程序的dex都进行动态加载。如果将加载的dex事先加密,加载前解密,这样就完成了对程序完整的解密了。但这里面遇到一个问题,那就是
2021-10-01 17:29:55
1054
原创 VEH+硬件断点实现无痕HOOK
文章目录hook的分类硬件断点hook原理设置硬件断点注册VEH代码实现VEH无痕Hook说说一路踩过的坑实际效果小结关于veh hook的对抗参考文章参考文章hook的分类hook方式有多种,这里做了一个系统性的总结对比,如下:实际上第二种和第三种属于同一类型的hook,都是利用异常处理函数来处理,只是触发异常的方式不同硬件断点hook原理想要实现硬件断点hook,需要实现下面几个步骤设置硬件断点注册veh异常处理函数编写异常处理函数,实现自己的hook代码设置硬件断点首先来说一
2021-09-24 16:24:20
5885
1
原创 018 Android加固之实现dex加载器
文章目录Android APK加固-安全人员角度关于类加载器类加载器类加载器的种类和个数创建类加载实例类加载器DexClassLoader和PathClassLoader使用类加载器动态加载dex文件制作dex文件动态加载dex文件完整步骤回顾Android APK加固-安全人员角度Android安全人员对APK加固采取的角度大概分为以下几个方面:将可执行代码dex文件加密,能够动态解密并执行能够检测当前状态是被调试,想尽一切办法反调试那如果继续再细分一下,实现一个初级的APK加固:使用类
2021-08-07 21:32:08
1396
原创 017 Android加固之APK混淆和保护方式
文章目录APK加固介绍使用proguard对apk中的源码进行混淆proguard原理对APK反编译之后的smali进行混淆代码乱序原理乱序实例-Hello对APK中的字符串进行加密解决方案1-StringBuilder拼接解决方案2-编码混淆解决方案3-加密处理小结对APK中的文件进行校验对APK中的Dex文件进行校验对APK中的APK进行校验对APK中的签名进行校验小结APK加固介绍Android应用程序使用的开发语言是JAVA,由于采用的是这种解释型语言,所以代码可以被反编译。如果没有经过混淆或是
2021-07-22 21:04:26
1549
5
原创 016 Android之NDK开发
文章目录NDK入门指南下载NDK和工具NDK工程说明JNI数据类型JNI中的描述符JNI基本使用JAVA代码调用C++代码C++代码调用JAVA代码C++代码修改JAVA字段动态注册NDK入门指南原生开发套件(NDK)是一套工具,能够在Android应用中使用C和C++代码,并提供众多平台库,可以使用这些平台库管理原生Activity和访问物理设备组件。与NDK密切相关的另一个词汇则是JNI,它是NDK开发中的枢纽,Java与底层交互大多数通过它来完成。JNI: Java Native Interf
2021-07-07 15:02:54
353
3
原创 015 Android之可执行文件dex
文章目录从一个hello world开始Dex文件结构文件头各种数据的数组字符串表类型表原型表字段表方法表类数据手工解析Smali代码从一个hello world开始smali代码和dex之间有着千丝万缕的联系,先从一个最简单的dex文件hello world开始,学习整个dex文件的结构.class public LHelloWorld;.super Ljava/lang/Object;.method public static main([Ljava/lang/String;)V .
2021-07-07 14:55:53
943
2
原创 014 Android之Cydia与Xposed框架入门
文章目录Android Hook框架介绍Cydia Substrate插件编写步骤实例:编写Cydia修改系统字体颜色Xposed插件编写步骤实例:Hook获取手机序列号准备工作获取hook所需要的数据编写hook代码效果测试Android Hook框架介绍Android中比较经典的Hook框架有两个Cydia Substrate,闭源,从苹果开始到Androidxposed,开源,从Android开始到苹果Cydia Substrate插件编写步骤Cydia Substrate插件编写的
2021-06-25 10:59:20
447
原创 013 Android锁机病毒分析
文章目录免流服务器-锁机病毒分析秒抢红包-锁机病毒分析免流服务器-锁机病毒分析首先来分析这个免流服务器的锁机病毒,文件信息如下文件: 免流服务器.apk大小: 799835 bytes修改时间: 2016年3月 16日, 23:26:10MD5: 2EFCA46F34A565C2EF4052B89B6B364BSHA1: 5493A958A592BB0B19C43ACB2C1F52C898885207CRC32: 7F89A927安装以后点击安装核心按钮这里在请求root权限,点击
2021-06-25 10:44:30
2166
1
原创 012 动态调试smali代码
文章目录前言配置调试插件调试插件的使用总结常见问题前言之前分析游戏进行破解的时候,都是通过字符串和日志的方式来对程序进行静态分析。但是在遇到算法类型的程序时,这种方法就显得效率特别低,所以就需要对代码进行动态调试。配置调试插件使用Android Studio可以动态调试Smali代码,需要用到一个插件smalidea-0.05.zip打开插件选项点击Install plugin from disk找到插件目录,点击确定,然后重启IDE调试插件的使用将apk导入到Android Ki
2021-06-16 12:24:10
466
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人