扫描进程中的字节

时间:2015-07-27 22:43:26

标签: c++ function byte call

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

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

2 个答案:

答案 0 :(得分:0)

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

将数据传输到处理器的数据缓存中,然后扫描它。

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

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

答案 1 :(得分:0)

IMO,这是一个相当无望的目标。至少在第一次尝试时,我会挂钩导出的函数(基于提及DLL等,我假设这是在Windows上)。

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

实际上,这不太可能做很多好事 - 能够在不知道他们是/做的情况下记录功能可能会产生大量输出,但很少有真实的信息。