Memory GDB是否支持演绎内存扫描,比如作弊引擎?

Memory GDB是否支持演绎内存扫描,比如作弊引擎?,memory,gdb,reverse-engineering,cheat-engine,Memory,Gdb,Reverse Engineering,Cheat Engine,当您没有目标程序的源代码时,查找内存中变量位置的最佳方法之一是扫描进程内存中的当前值,并记下包含该值的所有地址。然后,做一些改变值的事情,检查列表中的每个地址,删除那些没有新值的地址。冲洗并重复 P>这项技术很好地用于寻找各种各样的值,我认为它是必不可少的。最著名的作弊工具叫做作弊引擎,因为它最常用于黑客游戏。当然,它在其他类型的软件上也同样有效 出于某种原因,许多调试器,甚至是为二进制分析设计的调试器,都没有这种功能。我想知道的是GDB是否可以进行这种扫描。我还没有看到它的选项,但是拥有它会

当您没有目标程序的源代码时,查找内存中变量位置的最佳方法之一是扫描进程内存中的当前值,并记下包含该值的所有地址。然后,做一些改变值的事情,检查列表中的每个地址,删除那些没有新值的地址。冲洗并重复

<> P>这项技术很好地用于寻找各种各样的值,我认为它是必不可少的。最著名的作弊工具叫做作弊引擎,因为它最常用于黑客游戏。当然,它在其他类型的软件上也同样有效

出于某种原因,许多调试器,甚至是为二进制分析设计的调试器,都没有这种功能。我想知道的是GDB是否可以进行这种扫描。我还没有看到它的选项,但是拥有它会非常有用,而且它在GDB中工作得很好。(我可以很容易地看到它的实现,您可以通过在C语法中指定一个数据类型来初始化扫描,然后通过一个表示该数据类型指针的变量为每个地址指定一个布尔表达式来过滤地址。)

如果GDB中不存在此功能,是否有现有的fork或补丁来添加此功能?我知道我还可以使用其他工具,但GDB受到许多不同目标的广泛支持,而这些目标不一定受到其他软件的支持

我想知道的是GDB是否可以进行这种扫描

我想知道的是GDB是否可以进行这种扫描


我知道这个命令,但我不认为它符合我的要求。有没有一个选项可以让它查看以前搜索中找到的所有地址,并且只查看那些地址,而不手动指定所有地址?我知道这个命令,但我认为它不会满足我的要求。是否有一个选项可以让它查看以前搜索找到的所有地址,并且只查看这些地址,而不手动指定所有地址?
(gdb) help find
Search memory for a sequence of bytes.
Usage:
find [/SIZE-CHAR] [/MAX-COUNT] START-ADDRESS, END-ADDRESS, EXPR1 [, EXPR2 ...]
find [/SIZE-CHAR] [/MAX-COUNT] START-ADDRESS, +LENGTH, EXPR1 [, EXPR2 ...]
SIZE-CHAR is one of b,h,w,g for 8,16,32,64 bit values respectively,
and if not specified the size is taken from the type of the expression
in the current language.
Note that this means for example that in the case of C-like languages
a search for an untyped 0x42 will search for "(int) 0x42"
which is typically four bytes, and a search for a string "hello" will
include the trailing '\0'.  The null terminator can be removed from
searching by using casts, e.g.: {char[5]}"hello".

The address of the last match is stored as the value of "$_".
Convenience variable "$numfound" is set to the number of matches.