一周干货集 (3)

现在是2018年的第十周了。突然换了个环境,发现自己久久不能适应。各种拖延症,各种不想动,也是不知为何。可能是到了致郁期。还是闭上眼睛早早的过去吧。

外挂基本原理

最近各种颓废的吃鸡。慢慢的又是那种被模式制约的感觉。所以也是想当当神仙。所以网上找了一波辅助。

GitHub

其实一直有自己写辅助的想法,可是好久好久,也只是个想法。这次不知哪位dalao在Hub上放出了源码。

对源码大体看了看,区区500行,实在说不上复杂。答题分一下几个部分

  • 取得进程RVA
  • 进行偏移,对属性地址写内存
  • 进入消息循环
  • 响应快捷键,写内存

具体的结构还是很简单的。

DWORD maincode = GetModuleBaseAddress (pid, "hyxd.exe");//天空变黑防封;DWORD FLY_BAN = maincode + 0x64F573;DWORD FLY_BAN_TMP = maincode + 0x64F2F9;WriteNumProcessMemory (pid, FLY_BAN_TMP, 24);WriteByteProcessMemory (pid, FLY_BAN, tobyte (to16 (0xF30F590D, FLY_BAN_TMP, addre), bits));

这里就是找基址的部分,和直接对特定偏移的内存写。

delete 和 delete []区别

delete 是C++里面用于回收new的内存的关键字。一直用的是delete,这个delete[],还是在都这个代码里面第一次遇到。

根据自己开的资料里讲,如果单单new一个简单类型,那么实际效果是相同的

int *a = new int[10];delete a;        //方式1delete [] a;     //方式2

这里的a的空间大小是固定的,所以我们可以使用者两种方式来清理内存

不过如果遇到了特使情况。我们这里是复杂类型(complex)

class A {        ...        ~A(){cout << "asd"}};A *a = new A[10];delete a;  a = new A[10];delete pbabe[];

这里两种表达方式就出现了差异。a 是直接删除了这个对象数组的头地址。的确也是释放了A[10]的空间,不过只会执行一次析构函数。而delete[] 会依次执行十次析构

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注