LyShark®

信息安全电子刊物出版品牌

IAT(Import Address Table)Hook是一种针对Windows操作系统的API Hooking 技术,用于修改应用程序对动态链接库(DLL)中导入函数的调用。IAT是一个数据结构,其中包含了应用程序在运行时使用的导入函数的地址。IAT Hook的原理是通过修改IAT中的函数指针,将原本要调用的函数指向另一个自定义的函数。这样,在应用程序执行时,当调用被钩子的函数时,实际上会执行自定义的函数。通过IAT Hook,我们可以拦截和修改应用程序的函数调用,以实现一些自定义的行为,比如记录日志、修改函数参数或返回值等。

阅读全文 »

选择结构,也称为switch语句,是计算机编程中的一种控制结构,用于根据表达式的值选择不同的执行路径。它允许程序根据表达式的值来决定执行哪个代码块,从而实现多分支选择逻辑。switch语句由一个表达式、多个case标签以及对应的代码块组成。程序会将表达式的值与每个case标签进行匹配,一旦找到匹配的case标签,程序将执行对应的代码块,并继续执行该代码块之后的代码,直到遇到break语句或者switch语句结束。

阅读全文 »

InlineHook 是一种计算机安全编程技术,其原理是在计算机程序执行期间进行拦截、修改、增强现有函数功能。它使用钩子函数(也可以称为回调函数)来截获程序执行的各种事件,并在事件发生前或后进行自定义处理,从而控制或增强程序行为。Hook技术常被用于系统加速、功能增强、外挂开发等领域。本章将重点讲解Hook是如何实现的,并手动封装实现自己的Hook挂钩模板。

阅读全文 »

C++的指针操作可以说是继承了C语言的优点,但同时也带来了一些问题,例如内存泄漏、悬挂指针、访问越界等。这些问题不仅会导致程序运行错误,还会对系统稳定性造成影响。为了避免这些问题,Boost库提供了一套高效的自动内存管理指针操作函数,这些函数使用引用计数技术来管理内存。

阅读全文 »

本关是CE修改器的第一关,用户需要通过 `Cheat Engine` 工具完成精确扫描值。在这个练习中,需要将一个特定的数值(健康值)改变为 1000。首先,要确保数值类型设置正确,默认的是2字节或4字节。接着,选择“精确数值”扫描类型,将健康值填入数值输入框中,点击“首次扫描”。在扫描结果中,如果出现多个地址,可以继续点击打我按钮并输入变更后的健康值来进行“再次扫描”,确定正确的地址。双击左侧列表中的地址可以将其移动到下方的地址列表中并显示其当前值。接着,双击下方地址列表中的数值(或者选择它,按下回车),填写你要修改的数值1000。如果操作正确,"下一步"按钮将变成可点击的状态,本关就算完成了。如果出现错误,可以点击“新的扫描”重新开始扫描,或者点击“打我”查找更多的线索。

阅读全文 »

本关需要扫描未知数只扫描,要在不知道初始值的情况下找到一个在0到500之间的数值。首先,选择“未知的初始值”扫描方式,在数值类型中选择 4 字节,并点击“首次扫描”以开始扫描。扫描结束后,点击“打我”按钮进行一些操作,回到 Cheat Engine,选择“减少的数值”作为扫描类型,点击“再次扫描”并重复操作直到检索出很少的几个地址。由于该数值在0到500之间,可以挑出最为相似地址,并将其加入到下方的地址列表。接着,将健康值更改为 5000 以便进入下一关。需要记住的重点是,在开始新的扫描之前,务必要先点击“新的扫描”按钮。

阅读全文 »

本关需要使用 Cheat Engine 工具对浮点数进行扫描,完成修改任务。浮点数是一种带有小数点的数值,通过“浮点数”扫描方式进行修改。本关中,健康值为单精度浮点数,弹药值为双精度浮点数,需要将这两项数值都修改为 5000 或更高。提示建议禁用“快速扫描”功能,以获取更准确的扫描结果。

阅读全文 »

代码替换功能,需要使用 Cheat Engine 工具的“代码查找”功能,来查找游戏数据存储在内存中的地址。首先找到当前数值的存储地址,并将其添加到下方地址列表中。然后右键单击该地址,并选择“找出是什么改写了这个地址”,将弹出一个空白窗口。接着,点击本教程窗口上的“改变数值”按钮,并返回 Cheat Engine,如果操作没有问题,在空白窗口中将出现一些汇编代码。选中代码并点击“替换”按钮,将其替换为什么也不做的代码(空指令),同时,修改后的代码也将放置在“高级选项”的代码列表中保存。点击“停止”,游戏将以正常方式继续运行,关闭窗口。现在,再次点击教程窗口上的“改变数值”,如果锁定速度足够快,“下一步”按钮将变为可点击状态。提示:在锁定地址时,如果速度足够快,“下一步”按钮也会变为可点击状态。

阅读全文 »

上一步阐述了如何使用代码替换功能对付变化位置的数据地址,但这种方法往往不能达到预期的效果,所以我们需要学习如何利用指针,在本关的`Tutorial.exe`窗口下面有两个按钮,一个会改变数值,另一个不但能改变数值而且还会改变数值在内存中存储的位置。接下来我们将找到内存中的基址,为什么要找指针,在前面的教程中,如果各位细心观察的话就会发现 在笔者截图中的出现地址和你的地址并不相同。也就是说,这些地址是一直在变化的,我们把它叫做动态地址,我们必须寻找到该动态地址的基址,并以此来保证唯一性。

阅读全文 »

从本关开始,各位会初步接触到CE的反汇编功能,这也是CE最强大的功能之一。在第6关的时候我们说到指针的找法,用基址定位动态地址。但这一关不用指针也可以进行修改,即使对方是动态地址,且功能更加强大。代码注入是将一小段你写出的代码注入到目标进程中并执行它的技巧。在这一步教程中,你将有一个健康值和一个每按一次将减少 1 点健康值的按钮,你的任务是利用"代码注入",使每按一次按钮增加2点的健康值。

阅读全文 »