2

最近我一直在学习如何使用注入和作弊引擎来反汇编潜在的恶意软件和锁定的程序。我正在快速进步,但现在被困在一件事上。

作弊引擎本身有一个名为“AOB 注入”的功能,它允许用跳转到新分配的内存的 jmp 替换代码,在那里您可以编写新的操作码并在执行后返回。这就是所谓的“AOB 注入”或“代码洞穴”。

现在我正在努力为我的流程创建一个代码洞穴。使用 Memory.dll NuGet 创建代码洞穴应该不会那么难,因为它已经实现了该功能,但它看起来对我不起作用,因为我可能做错了什么?

我的代码:

m.OpenProcess("Process"); //allocating Process.exe to the Memory NuGet
byte[] freezebytesX = { 0xF3, 0x0F }; //Bytes to add to the code cave

//creating a codecave at "UserAssembly+36652EE2"  with the size of 2 Bytes
UIntPtr codecavebase = m.CreateCodeCave("UserAssembly+36652EE", freezebytesX, 2); 

UIntPtr codecaveAllocAddress = UIntPtr.Add(codecavebase, freezebytesX.Length);
int newint = (int)codecaveAllocAddress - 6;
        
Console.WriteLine("Read Allocated Memory: 0x" + newint.ToString("X") + "\r\n" + codecaveAllocAddress);

所以它说它在控制台中分配了操作码但是如果我检查操作码它仍然是相同的并且根本没有改变。它不应该将其更改为跳转到创建的代码洞穴的 jmp 吗?

谢谢你的帮助 :)

4

0 回答 0