- 博客(82)
- 收藏
- 关注
原创 二.《某三国》背包遍历
6.我们有理由怀疑这是一个,全部对象的遍历,因为上个地址找的是单纯的道具遍历,遍历不到装备,道具,装备,奥义,灵魄,灵兽,甚至元神,身上穿戴的装备,疑似类型判断A5。继续按F9 发现后面的对象为0 也一直在断。[[[[[12D8630]+4]+C]+24]+4A4] =道具 数组首地址。[[[[[12D8630]+4]+C]+24]+4A8] =道具 数组尾地址。10. [[[[12D8630]+4]+C]+24]+1C =数组首地址。11.[[[[12D8630]+4]+C]+24]+10 =数组大小。
2023-07-22 12:37:09 357
原创 一.《某三国》人物属性及其相关属性
18.好了,到这里我们得到了一个偏移表达式:[[[21D8630]+14]+98]+8DB0。1.找一个可以操控变化的属性来找 比如血量.坐标或者五铢(绑定金币),这里我们用五铢找。3.到现在我们就确定了:[[[21D8630]+14]+98] 这一层就是人物属性对象。9.往上翻,发现前面的代码被混淆了,先不管它,我们在(CTRL+F9)返回一层。14.[EAX+98]+8DB0,我们继续找EAX ,EAX来源上一层CALL。12.我们进去之后,发现没有混淆了,有个ESI,我们打个怪下段看看。
2023-07-17 16:48:30 250
原创 一.CreateFileMapping实现的共享内存及用法
操作系统将把每一个进程的逻辑地址转换成实际的物理地址,独立的地址空间可以使其他已经出错的进程之间相互隔离,入阁一个进程通过他自己的内存空间处理数据,其他的进程就比在DOS中安全,在DOS中的所有应用程序共享相同的物理内存空间,虽然这带来了许多好处,但在不同进程之间转的指针,就会出现一些麻烦。4.随着进程的分离内存空间的出现,进程不能简单地使用GlobalAlloc()函数来分配内存,并把它转递给另一个进程来共享,一个进程检查有另一个进程分配的指针,他只是指向随机地址。
2023-07-16 15:57:20 1418
原创 二.《泽诺尼亚》明文CALL
3.通过几个功能的返回CALL分析,我们最终确定了再返回的第二层就是明文CALL,因为这个CALL是基本上所有关于发包的功能都会断下,而只要再返回一层,那就只有。4.正如大家看到的,我们在send流程断下的地方,都属于线程2的范畴,而需要找到明文CALL,则需要跳出(Ctrl+F9)线程2。7.这里明确要记住的是,你只有内存数据的访问写入才有跨线程的特性,而仅仅靠简单的Ctrl+F9执行到返回是不可能跨线程的。1.其实确定是很简单的,那就是通过功能触发断下,多返回几层,找到分支的那个点就可以啦。
2023-07-09 15:46:34 351
原创 一.《泽诺尼亚》背包物品数据分析和遍历
其实是有的,只是经过这个CALL,才会被写入,也就是这个CALL很可能是一个获取对象的CALL,并把对象写入到rdx堆栈地址中,说明我们的猜测应该是对的,最终堆栈里面的对象来源就是这个CALL。18.这下就好办了,我们就在这个CALL下断点,然后转到rdx堆栈地址,观察此时是没有我们所需要的对象,这个时候按F7进入CALL,接着按F8,逐步分析啥时候写入了这个rdx堆栈地址中得值。6.这个4来源是哪里呢?20.发现一个结构体数组,了解过数组概念的同学都知道,我们只需要找首地址就行了,也就是rcx的地址。
2023-07-01 20:55:43 766
原创 【迪大学院】X64X86游戏安全逆向分析相关所有视频链接
全面讲解X64X86X游戏安全逆向分析 数据分析 辅助架构全套体系流程 专注与C++各类型框架研发
2022-08-24 11:38:52 2392
原创 91 92 93 94 95 96 97.C++学员作业
1.应用题1.1 根据前面的作业,把业务记录和图书记录保存到文件中1.2 业务记录保存为文本文件类型,图书记录保存为二进制文件类型1.3 需要有保存和读取的节课1.4 当图书管理系统刚开始加载的时候需要读取当前的图书馆中图书的情况...
2022-03-31 18:48:49 1133
原创 88 89 90.C++学员作业
1.应用题1.1 之前由于小明只关注了如何管理图书1.2 但是又出现了一个问题,由于人太多出现了插队的现象1.3 先如今按上了防护栏 ,实现必须排队,规定按照排队顺序办理业务原则1.4 请用合理代码和容器来模拟客户排队现象,对每个客户的不同业务类型进行合理的办理1.5 业务类型有:租借 (办理业务)购买(办理业务) 归还(办理业务) 离场(就是免费看书不需要钱) 进场(直接放行) 等等 (目前就一个队伍,出口)1.6 实现一个业务处理逻辑和图书管理系统的交互1.7 举例:
2022-03-31 18:45:20 903
原创 85 86 87.C++学院作业
1.应用题要求1.1. 小明开了一家图书馆,里面有很多类型的图书1.2 有的时候由于看图的人很多,会对图书进行严格的管理,比如:租借 买卖 回收 等等情况1.3 租借会记录人员信息,偿还信息,金额信息等等1.4 其他也根据自定义合理添加属性1.5 请合理选择容器和逻辑,描述上面的情况写一个图书管理系统...
2022-03-31 18:31:12 1094
原创 81 82 83 84.C++学员作业
1.应用题1.1 请自定义同一个接口函数名的多个函数(全局函数),并传入对应的参数(逻辑操作自定义)1.2 给这些接口函数定义一个统一的命名空间 ,并调用2.应用题2.1 给图书类添加一个标准库的字符串类型的成员变量2.2 给图书定义一个构造函数,要求只有一个字符串类型的参数,在构造函数种对字符串进行拆分解析出来图书的各个属性并赋值给图书的各个成员变量。PS:举例:类似传入字符串:"C++辅助是如何锻炼的-001-迪大学员-[迪大出版社]-电子书"请自定义属性个数和含义,可任
2022-03-27 15:53:01 802 3
原创 76 77 78 79 80.C++学员作业
1.应用题要求1.1 现在图书的种类越来越多,小张学员到图书店买了多本图书,请定义多种图书类和学员信息类。1.2 小张妈妈每周会把新的图书给小张阅读,并收回上一周的图书,请自行编写逻辑随着天数的增加打印当前正在观察的图书信息。(最少不能小于3本书)1.3 突然有一天,某图书的出版社说要召回图书,原因仅是图书的某些页面有错误,需要修改后然后寄回给小张, 请用代码来解决这种场景。2.回答题2.1 虚函数表的首地址在对象的多少偏移处?2.2 父类指定了AAA成员函数,子类也有一样类型的AA
2022-03-26 14:32:43 1215 8
原创 73 74 75.C++学员作业
1.问答题1.1 子类是如何调用父类的构造函数的?1.2 如果不显示调用父类构造函数那么会调用父类的什么类型的构造函数?1.3 在继承下 子类 和父类 的构造函数和析构函数的调用顺序?请举例说明(可以为伪代码表明继承关系)1.4 在多继承下 子类 和父类 的构造函数和析构函数的调用顺序?请举例说明(可以为伪代码表明继承关系)2.应用题要求2.1 请根据实际情况,电子书类显示的去调用纸质图书类的构造函数并传递参数...
2022-03-23 21:15:13 1192 4
原创 12 13 14 15.C++学员作业
1.应用题要求1.1 如今电子产品发展迅猛,电子书也深受很多人的喜爱,现如今需要对之前的纸质图书进行电子化,我们又不能丢失了原有的属性,请用代码来解决?1.2 要求电子书不能拥有纸质图书的某些属性,但是有些属性可以使用,请合理利用限制符号...
2022-03-18 20:14:28 588 3
原创 9 10 11.C++学员作业
1.应用题要求1.1 用printf()直接通过%d和图书对象来打印图书当前阅读的页数,不能用. ->或者成员函数来输出1.2 成员函数会存在对象的所管理的内存区域吗?有存在内存对齐的现象吗?1.3 汇编下,this指针一般是通过什么寄存器来使用的?1.4. 计算并打印出当前阅读过的图书的数量(封装成一个函数打印出来)...
2022-03-17 19:36:38 999 4
原创 6 7 8.C++学员作业
1.应用题要求1.1 图书类中的书名需要用new出来的字符数组保存(注意内存泄漏问题)1.2 给图书类定义一个拷贝构造函数 并调用(自定义应用场景)1.3 定义的同类型图书对象的进行if大小比较(比较依据与所看页数)1.4 实现图书对象可以支持加减的运算(自定义属性的改变)...
2022-03-16 20:22:39 880 5
原创 3 4 5.C++学员作业
1.问答题1.1 在C++中 结构体和类的区别是什么1.2 简明阐述下 3种限制符号的区别1.3 3种限制符号在类中只能各一个是吗?1.4 析构函数的作用是什么?2.应用题要求2.1 给图书类中定义一个指针,在构造函数传入指定大小后指向动态申请内存(类型为char)地址,并赋值2.2 请选择在合适的时刻释放这块内存,以避免内存泄露的问题出现...
2022-03-15 21:26:42 761 6
原创 1 2.C++学员作业
1.应用题要求:1.1 定义一个图书的类,包含图书的成员变量(至少3个信息)和成员函数(至少3个)1.2 同是至少2个构造函数1.3 以不同方式来构造多个对象并调用成员函数来修改齐图书的信息2.问答题2.1 初始化列表的初始化顺序是依据于那个的顺序?2.2 this指针的含义是什么?2.3 构造函数会在什么时候触发?2.4 如果自己写了至少一个构造函数,那么编译器还会为我们自动创建构造函数吗?...
2022-03-14 21:49:48 1100 9
原创 三.MFC DLL窗口的创建和注入显示
一、什么是MFC微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量.其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类.我们之前接触到的是控制台,这里我们就可以接触到了窗口.二、DLL动态链接库英文为DLL,是Dynamic Link Library的缩写.D
2022-02-19 16:58:03 4276
原创 二十八.C语言项目(完结)
1.根据需求完成项目2.界面样式美化根据自己需求指定,目前只是在控制台上,大家可以借助控制台命令对控制台做一些美化包括字体颜色等等3.期待大家的作品!4.项目完成后单独发给我5.目的为了让大家对C语言有更好的理解和得到更好的锻炼...
2022-02-16 20:27:39 177
原创 二十六 二十七.20220114学员作业
1.用2个宏(多行用\连接)来组合成一个for循环结构,传入参数为初始化次数,循环次数和叠加步长,for循环的中间代码块不需要在宏中体现出来.
2022-02-14 11:05:49 240 2
原创 二十五.20220213学员作业
1.请参考课上,分析的图,来画图分析以下结构体的内存对齐情况(上传图片),同是用offsetof宏来打印出每个成员的偏移量?typedef struct 学员信息{ bool bSex; double dGrade; int iId; char bC;}学员信息;
2022-02-14 10:56:46 227 3
原创 二十二 二十三 二十四.20220211学员作业
1.自定义一个结构体(取别名)变量并初始化 (至少包含 字符串 整数 浮点数 布尔类型 各一个),通过某个值得不同(自定义场景),给结构体赋不同的值,并(用指针版本)打印出来2.请问如下结果为多少?说明原因?#include <stdio.h>#include "string.h"typedef union 工作情况{ char name[10]; int flag;}工作情况;int main(){ 工作情况 工作状态变量; strcpy_s(工作状态变量.nam
2022-02-11 19:12:51 560 10
原创 二.非模态窗口结束流程
非模态窗口结束流程1.对于非模态需要注意的比模态的多创建模态窗口资源和添加类1.创建一个新对话框资源和右键添加类2.使得对话框资源和类绑定3.非模态不是堵塞 最好用NEW对象或者一个全局变量 if (pCDialog非模态 == NULL) pCDialog非模态 = new CDialog非模态(); pCDialog非模态->Create(IDD_DIALOG2,this); pCDialog非模态->ShowWindow(SW_SHOW);3种关闭流程第一种:点X
2022-02-11 16:49:12 1025
原创 一.模态窗口和结束流程
模态窗口和结束流程1.对于模态窗口是很简单的创建模态窗口资源和添加类1.创建一个新对话框资源和右键添加类2.使得对话框资源和类绑定3.模态是堵塞 可以用局部变量或者NEW对象 if (pCDialog模态 == NULL) pCDialog模态 = new CDialog模态(); pCDialog模态->DoModal(); //CDialog模态 cDialog模态; //cDialog模态.DoModal();3种关闭流程第一种:点XOnClose()->On
2022-02-11 16:44:17 357
原创 一.Win32窗口坐标
窗口坐标指定的窗口大小为600*500除去左右下的边框标题栏+客户区大小为592 * 4691.客户端坐标RECT rc;GetClientRect(hwnd, &rc);2.屏幕坐标RECT rc1;GetWindowRect(hwnd, &rc1);3.坐标之间的转换ClientToScreenRECT rc;POINT pi;GetClientRect(hwnd, &rc);pi.x = rc.left;pi.y = rc.top;Clie
2022-02-08 17:03:37 2023
原创 二十 二十一.20220209学员作业
1.判断题1.1 在C语言中字符串可以使用关系运算符==比较相等 (?)1.2 strcpy_s()函数中第二个参数指的是缓冲区字节的数量 (?)1.3 strlen()函数计算的是字符的长度而不是字节的大小 (?)1.4 sprintf()和printf() 都是把格式化的字符串输出到控制台上 (?)2.回答题2.1 setlocal(LC_ALL,"chs')的用处?需要包含那个头文件?2.2 如果需要输出宽字符版本中文字符串到控制台上,需要用到那个函数输出?2.3 wc
2022-02-08 12:52:52 536 5
原创 十八 十九.20220208学员作业
1.用循环语句初始化(使用数组指针)一个二维数组(备注:使用 * 和 [] 各一个)2.请计算出最后结果? 同时说明原因? float array2[5][6] = { {1,2,3,4,5,6}, {7,8,9,10,11,12}, {13,14,15,16,17,18}, {19,20,21,22,23,24}, {25,26,27,28,29,30} }; int array1[5] = { 0 }; for (int index=0;index<5;in
2022-02-08 12:29:35 269 5
原创 六.结构体数组的由来以及演变优化
结构体指针数组的由来1.我们前面几节课讲到了结构体2.并讲了结构性数组3.如果记忆力还好的同学肯定记得我们提及过一个弊端4.就是当结构性数组的元素过多 会显得数组整个字节大小非常的大5.同是我们定义数组的时候 大小是固定的 也就是当定义数组就已经申请了固定大小的内存了6.也就是说 这么大的一片连续的内存 有可能申请失败的7.那么怎么解决呢?结构体指针数组1.这里就要想到 如果我们用数组只存我们结构的地址 不存实体2.那么 比如1000个元素 结构大小为123.存实体 那么就是12000
2022-02-02 12:46:57 886
原创 五.汇编下数组和步长的本质关系
数组1.经过我们之前的讲解 我们知道数组地址+1 指的是步长2.那么这里我们就围绕下 汇编是怎么表示的我们的+1 这个意思呢?3.首先我们代码:#include <stdio.h>#include "windows.h"int g_iNum[100] = { 0 };int main(){ for (int index=0;index<100;index++) { printf("%d\n", g_iNum[index]); } printf("Hello He
2022-02-02 12:44:20 965
原创 四.结构体性数组在内存的表现形式
结构体性数组在内存的表现形式1.上节课我们讲解了单纯的一个结构性变量在内存的排列方式2.这节课我们来看看如果是结构性数组会是什么排列方式呢3如下:#include <stdio.h>#include "windows.h"typedef struct INFO{ char flag; int id; float fd;}INFO;INFO info[2] = { {'H',1001,666.66f} ,{'E',8201,-999.88f} };int main()
2022-02-02 12:40:24 1081
原创 三.结构体在内存的表现形式
结构体在内存的表现形式结构体1.我们在之前讲过结构体struct 都知道struct 可以存放很多不同数据类型的数据2.这必将导致一个问题出现3.我们的结构体需要内存对齐4.如果不对齐 会导致内存排列很错乱(除非一些特殊需求 比如:我们在逆向找数据的时候 变得有些困难 不能一眼看出是什么类型的数据)5.好 这里我们给大家举个例子看一下举例1.我们在之前讲过 默认是8字节#include <stdio.h>#include "windows.h"typedef struct
2022-02-02 12:35:51 984
原创 二十三.函数的调用约定
函数的调用约定结合逆向反汇编讲解__cdecl1.__cdecl 右到左压栈 然后调用方平衡栈2.这种一般是C/C++语言的默认的调用约定3.由于是调用方平栈那么会导致一个问题就是,不同的编译器产生栈的方式不尽相同,那么调用者能否正常的完成清除工作呢?答案是不能。4.同时如果是调用方平衡栈那么会导致以产生的可执行文件大小会比调用_stdcall函数的大__stdcall1.__stdcall 主要用于调用Win32 API函数 右到左压栈 然后函数内部平衡栈 ret 8__fastcal
2022-01-31 12:15:17 161
原创 二十二.递归函数和函数指针
递归函数和函数指针递归函数通俗点讲就是自己调用自己但是可不是无限哦int TotalNum(int a){ printf("a=%d\n", a); if (a <= 1) { return 1; } return a * TotalNum(a-1);//注意这里如果是--a 或者a--会影响结果}int main(){ int sum = TotalNum(5);//5!5的阶乘 printf("sum=%d\n", sum);}注意:1.递归必须有一
2022-01-31 12:13:22 734
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人