c++ - 如何 Hook 导出功能不可用的Native进程?

标签 c++ hook reverse-engineering cracking codecave

我需要解决一个本地进程的逆向工程问题。 我有非托管的 .exe,上面有一些控件(例如 TextBox、Buttons、TextAreas、ComboBoxes)。在控件上填写所有数据后,用户将按“打开”。

实际上它会打开调制解调器端口并发送 AT 命令。我想检查数据的格式以及它将发送到调制解调器 COM 端口的消息。

所以我需要如何对流程进行逆向工程并 Hook 函数(很可能是“打开”调制解调器端口的函数,当用户单击“打开”时,它将被调用)。

建议??我的方向是正确的,我是否需要hook它的功能,然后注入(inject)后,我的目的就达到了。

注意事项:

未检测到导出函数。为此,我使用了 CFF/PE Explorer。

问候 乌斯曼

最佳答案

我看到了两种可能性。一种方法是将监视器连接到 com 端口,然后看看那里出现了什么。这完全避免了代码的 RE,并且通常会更快更容易。

[编辑:有两种形式:一种是硬件——连接到 COM 端口硬件的逻辑分析仪(或类似的东西)。它在串行数据流通过线路时对其进行解码和显示。另一种形式是使用 IAT 挂接到对 WriteFile 的调用并显示打开了哪些文件以及向每个文件写入了哪些数据的软件。微软Detours库可以对此有所帮助。]

如果您决定重新编写代码,您可能需要像 IDAPro 这样的合适的反汇编程序。您可能能够通过从调用CreateFileWriteFile 的地方开始找到处理 COM 端口的部分(假设您重新处理 Win32,基于提到的“PE”)。您可能会在某处将类似“\\.\COM”(或至少是“COM”)的文字字符串作为文字字符串,并且您会希望找到对使用该字符串的 CreateFile 的调用(或其拷贝)。

从那里开始,您将不得不向后工作以找到将实际写入 COM 端口的字符串放在一起的代码。不过,很难猜测这会有多复杂。

关于c++ - 如何 Hook 导出功能不可用的Native进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636760/

相关文章:

c++ - 对 sf::的 undefined reference

node.js - Killall 上的 NodeJS 关闭钩子(Hook)

obfuscation - 有没有像JavaScript的小工具(deobfuscator)这样的东西?

c++ - 使用句柄从外部修改 Windows GUI 对象

winapi - 连接到 Windows 文件复制

c - switch 语句汇编代码到c

c++ - C++11 之前的 "Constant expressions"

c++ - 自定义 OpenGL 缓冲类不显示任何内容

c++ - 可能错误设计的资源管理器中的模板错误

node.js - Mongoose 预删除有效,但不输出 Console.log