我正在尝试重新编码一个简单的 ftrace,但我无法理解像这样的 FF 间接调用:
ff 15 76 0b 20 00 callq *0x200b76(%rip) # 600ff0 <__libc_start_main@GLIBC_2.2.5>
Run Code Online (Sandbox Code Playgroud)
它是否像带有偏移量的 E8 指令一样工作?如果没有,如何找到呼叫指向的地址?那个电话的返回地址?
假设我正在制作一个C程序,当用户输入宝石的名字时,该程序会显示有关宝石的信息.
石头名称永远不会改变,并且只有不到20个,所以在运行时从外部文件读取它们似乎有点矫枉过正.
我还需要从多个文件中访问这些名称(比方说两个).
我通常做的是我声明一个全局char*数组,如下所示:
char *g_rsc_names[] = {"linemate", "deraumere", "sibur", "mendiane", "phiras", "thystane"};
Run Code Online (Sandbox Code Playgroud)
在文件中我需要使用它们.这看起来很好,但这只允许我访问我声明这个全局数组的文件中的名称.
在这种情况下,存储石头名称的最佳/最干净的方法是什么?