我需要解决一个本地进程的逆向工程问题。 我有非托管的 .exe,上面有一些控件(例如 TextBox、Buttons、TextAreas、ComboBoxes)。在控件上填写所有数据后,用户将按“打开”。
实际上它会打开调制解调器端口并发送 AT 命令。我想检查数据的格式以及它将发送到调制解调器 COM 端口的消息。
所以我需要如何对流程进行逆向工程并 Hook 函数(很可能是“打开”调制解调器端口的函数,当用户单击“打开”时,它将被调用)。
建议??我的方向是正确的,我是否需要hook它的功能,然后注入(inject)后,我的目的就达到了。
注意事项:
未检测到导出函数。为此,我使用了 CFF/PE Explorer。
问候 乌斯曼
最佳答案
我看到了两种可能性。一种方法是将监视器连接到 com 端口,然后看看那里出现了什么。这完全避免了代码的 RE,并且通常会更快更容易。
[编辑:有两种形式:一种是硬件——连接到 COM 端口硬件的逻辑分析仪(或类似的东西)。它在串行数据流通过线路时对其进行解码和显示。另一种形式是使用 IAT 挂接到对 WriteFile
的调用并显示打开了哪些文件以及向每个文件写入了哪些数据的软件。微软Detours库可以对此有所帮助。]
如果您决定重新编写代码,您可能需要像 IDAPro 这样的合适的反汇编程序。您可能能够通过从调用CreateFile
和WriteFile
的地方开始找到处理 COM 端口的部分(假设您重新处理 Win32,基于提到的“PE”)。您可能会在某处将类似“\\.\COM”(或至少是“COM”)的文字字符串作为文字字符串,并且您会希望找到对使用该字符串的 CreateFile
的调用(或其拷贝)。
从那里开始,您将不得不向后工作以找到将实际写入 COM 端口的字符串放在一起的代码。不过,很难猜测这会有多复杂。
关于c++ - 如何 Hook 导出功能不可用的Native进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636760/