Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        3年前关闭。
                                                                                            
                
        
码:

#include <cstdio>

void f() {
  printf("target_string");
}

int main(){
  //any way to access target_string?
}


有什么办法可以实现?



我知道如果将字符串定义为全局变量,则可以轻松实现。

但是,实际上,我正在尝试探索C ++的隐藏功能,我只是想知道这是否可能...

最佳答案

反汇编您的小程序,并查看字符串的存储位置。如果您存储了字符串,那么假设在某个函数或命令之前或之后有五个字节,然后使用此信息来确定字符串的位置。使用指针指向您的字符串,然后访问它。

例:

0xff7722: mov eax, 7 #beginn of your function
...
0xff7727: #your string

0xff7727 - 0xff7722 = 5;

void* pointer = &f;
f+=5;


f指向您的字符串。

如果编译器决定将指针放在字符串和函数之间,则指针可能指向错误的位置。

09-30 18:34
查看更多