Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
码:
有什么办法可以实现?
我知道如果将字符串定义为全局变量,则可以轻松实现。
但是,实际上,我正在尝试探索C ++的隐藏功能,我只是想知道这是否可能...
f指向您的字符串。
如果编译器决定将指针放在字符串和函数之间,则指针可能指向错误的位置。
想改善这个问题吗?添加详细信息并通过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指向您的字符串。
如果编译器决定将指针放在字符串和函数之间,则指针可能指向错误的位置。