2012-05-18 33 views
0

有没有一种很好的方法(或者一个好的lib/class /源文件/某些东西)在运行时在某个地址找到一个字节签名(使用一串字节)并获得指向那个地址?C++动态字节签名

I.e.在运行内存:

... 05 AE 24 6B 00 B1 ... B5

并在运行时发现的AE 6B 24所述第一图案和返回位置的地址?

+0

您可能想要查看Windows上的'ReadProcessMemory'和Linux上的'ptrace'。 –

回答

1

你看起来像strstr,对不对?尝试memmem(3)

+0

所以理论上我需要找到我正在扫描的模块/地址空间的大小才能正常工作,对吗? – Qix

+0

是的,并确保您有正确的访问该内存区域。 – dtatulea

+2

'std :: search'更便于携带; 'memmem'是一个GNU扩展,不是标准C库的一部分。 –

0

假设你想使用一个char *找到匹配的模式使用char *pMem =(char *)(*(3452345))

然后遍历所有的内存,让您的搜索从存储器地址开始3452345.

创建char *

但是,这种方法很容易出错(您可以在访问内存的某些部分时发生错误),您应该处理错误。