扫描进程中的字节

Scanning through bytes in a process

本文关键字:字节 进程 扫描      更新时间:2023-10-16

我目前正在开发一个程序,这个想法涉及扫描进程(dll被注入的进程)中的所有字节,如果在字节处发现函数,返回信息并继续扫描。

我唯一的问题是-扫描进程(当前进程)中的所有字节并检查扫描的字节是否为函数的最有效方法是什么?

在我看来,这是一个相当无望的目标。至少在第一次尝试中,我将钩住导出的函数(基于提到的DLL等,我假设这是在Windows上)。

如果您想扫描更多未导出的函数,下一步可能是反汇编代码并查找Call指令,然后将每个指令的目标地址保存为函数的入口点。

实际上,这样做不太可能有很多好处——能够在不知道函数是/做的情况下记录函数,可能会生成大量输出,但很少有真正的信息。

扫描内存中字节的最有效方法是使用任何专门的处理器指令。

将数据放入处理器的数据缓存中,然后进行扫描。

如果可以的话,获取符合处理器字长的字节大小。例如,ARM7TDMI处理器具有32位字长,这意味着它一次可以获取4个字节。因此,处理器最有效的读取是4个字节的倍数。

我们需要更详细的平台信息,包括操作系统和处理器。