问题标签 [codecave]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
126 浏览

c# - 带有计时器的 WPF 代码洞穴循环

我遇到了代码洞穴代码尝试使用计时器而不是“while”进行循环的问题。它只是写入一次值然后只写入 0 值。我想要的是基于计时器并在读取其他值之后每秒写入一个地址。就像刷新读取值一样。我有另一个工作正常的代码,但这个代码洞穴不是:

好吧,我需要根据读取地址的内容每秒写入 2 个值……如果已经更改,则立即写入新值。以及如何减少此代码...我认为可以进行一些修改:)。

非常感谢您的任何支持,想法。

0 投票
1 回答
2515 浏览

c# - 无需 C/C++ 或程序集的托管 Dll 注入

如何使用 VB/C# 在远程进程中注入托管 dll,而不使用任何 C/C++ 引导 dll 或任何用程序集编写的代码洞穴。

0 投票
1 回答
2401 浏览

windows - 程序重新加载时 OllyDbg 中的地址更改

这是我的第一篇文章,我是组装和调试的新手,所以请多多包涵。

我试图将一些代码(对 MessageBoxA 的一点调用)注入到 Windows 7 记事本可执行文件中。但是,我遇到了地址的问题。首先,我在 OllyDbg 中打开 exe,然后转到包含“notepad.pdb”的 ASCII 文本的行。然后我在其下方放置一个 ASCII 字符串(例如,“INJECTED NOTEPAD”)。接下来,在此之下,我输入了这个 asm 代码:

接下来,我转到程序中的第一行代码(只需右键单击并按 Go to Origin(或只需在数字键盘上按 *))然后我将第一行替换为 JMP 指令到第一个地址PUSH 0 在我注入的代码中。然后,我将替换的指令放在注入代码的末尾。之后,我在 JMP 指令之后的代码行中添加了一条 JMP 指令,该指令跳转到我的注入代码(是的,我只是描述了一个 codecave 或类似的东西)。当我运行它时一切正常。但是,当我将修改后的代码保存到新的可执行文件并再次使用 OllyDbg 运行它时,它不起作用。当我尝试引用我输入的 ASCII 字符串时,地址完全错误。示例如下图所示:

如您所见,我将字符串压入堆栈,但是当我再次将修改后的程序重新加载到调试器中时,字符串的地址发生了变化,但我的代码没有。因此,当我调用 MessageBoxA 函数时,它会出错,因为我为 Text 和 Caption 参数加载了错误的地址。我该如何解决?

0 投票
1 回答
489 浏览

c# - 计算c#中代码洞穴的64位jmp

我无法解决我的问题。任何帮助表示赞赏。我想为我分配的内存创建一个 jmp。如果我用作弊引擎分配的内存检查我的计算,那就没问题了。原因 Cheat Engine 在更高的区域分配内存。我分配的内存是例如:0x870000,我要创建 jmp 的地址是:7FFDE65F5184。

50% 的结果是正确的。有人可以帮忙吗?

这是我的结果:

为什么我需要的 jmp 地址前面有 7FFE00 ?如果我在 VirtualAllocEx 中选择 IntPtr.Zero 以外的另一个值,则返回值为 0 - 不知道为什么!我知道它编码不好,但首先我想了解我的问题是什么以及如何解决这个问题。

非常感谢你们!

0 投票
1 回答
503 浏览

assembly - 为什么使用线程注入注入代码洞穴会使我的目标 win32 EXE 崩溃?

我目前正在尝试将带有线程注入的代码洞穴注入到在我的 win7 (x64) 系统上运行的远程 win32 EXE。为此,我使用 Microsoft VB6,通过它我执行以下操作:

  • OpenProcess,获取远程进程的句柄 [OK]
  • VirtualAllocEx,在进程内部分配一些空间(以 PAGE_EXECUTE 保护和 MEM_COMMIT 作为参数。lpAddress 设置为 NULL 以便函数确定分配区域的位置)[OK,返回一个有效的偏移量]
  • WriteProcessMemory,编写我的 shellcode [好的,实际上正确写入了字节,我已经检查过 CheatEngine/MemoryView]
  • CreateRemoteThread,线程注入执行我的代码洞穴
  • 我的目标 EXE(刚刚创建的远程线程的主机)此时崩溃(“exename”停止工作)
  • WaitForSingleObject / CloseHandle / VirtualFreeEx

为了测试成功的代码注入,我试图注入一个什么都不做的shellcode。我对shellcoding和asm了解不多,但我才刚刚开始学习。

我尝试注入不同的代码,例如: - 只有 NOP(崩溃,但我假设它是正常的):\x90\x90\x90.. - 只有 NULL(与上面相同):\x00\x00\x00.. 但是我不明白的是,RETN 之后的 NOP 也会使我的目标 EXE 崩溃 \x90\x90\x90\xCB。我尝试注入的每个字节序列后跟一个 NULL 字节。

为什么我的目标进程崩溃?我必须注入什么字节序列才能执行不会使我的目标 EXE 崩溃的成功注入(但它什么也没做,只是为了测试注入方案)?

我最终想要做的是向游戏注入一个 PUSH x, CALL 目标函数。但是,如果我的虚拟 shellcode 使我的目标进程崩溃,我假设后一个字节序列也会崩溃。谢谢你的时间。

编辑:我得到的异常是 0xC0000005 [写入时访问冲突]

VB6 代码:只需使用目标 Exe 的 pid 作为参数调用 sub

不过有些奇怪的事情发生了。当我在调用 CreateRemoteThread 之前出于调试目的放置 MsgBox(暂停执行)时,该函数返回一个非 NULL 句柄(但目标 EXE 崩溃)。如果我在调用 CreateRemoteThread 之前没有放置 Msgbox,则会返回一个 NULL 句柄。

0 投票
0 回答
149 浏览

assembly - 在汇编程序中调用外部 dll(逆向工程)

我有一个游戏的 exe 文件,我想添加一些实现。

为此,我需要在从外部 dll 执行函数的汇编程序中添加一个“跳转”。

我需要在函数内添加跳转:

在此处输入图像描述

在此处输入图像描述

我没有汇编程序的经验,也不知道添加这个跳转有多难。

目前我找到了这个教程:

https://www.youtube.com/watch?v=80bjkJcCQO4&feature=emb_logo

执行外部exe,这不正是我需要的......

但是,如果有一种方法可以使用参数从命令行执行外部 exe:

调用 myprogram.exe -a1

在 assembler 中,可以是一种折衷方案,因此我可以创建一个带参数的命令行,而不是创建一个带参数的 dll,这两者都是一个很好的解决方案。

你能告诉我一个汇编代码,它使用来自外部 dll 的参数执行函数或使用参数执行外部命令行吗?

谢谢 !

0 投票
0 回答
61 浏览

assembly - IDA 补丁,如何添加新代码,创建新变量?

我对 IDA 和补丁有非常基本的了解。据我了解,我可以通过Edit -> Patch program -> Assembly. 但是我该如何在程序中添加新的代码行呢?

现有变量也可以通过doing改变Patch program-> Change byte,如何添加新变量?

0 投票
1 回答
85 浏览

c# - 如何将 32 位 CodeCave 注入 64 位应用程序?

如何将 32 位 CodeCave 注入 64 位应用程序?

我见过一些这样的实现:

然后我按照这个地址看到这个:

我按照这个地址:

他是怎么做到的呢?我应该如何在 C# 中实现它?

我可以注入 CodeCave,但如果应用程序是 64 位的,那么它将始终引用 64 位地址,我如何注入 CodeCave 使其引用 32 位地址?

0 投票
0 回答
244 浏览

c# - C# - 编写一个 codecave (aobinjection)

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

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

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

我的代码:

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

谢谢你的帮助 :)