想要看下 输入值,std::string *message这个message 一直不能输出Memory.readCString 输出就是方法hexdump 输出看不懂的东西,看着不像加密的
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
去分析std::string 里面的char*的偏移地址。一般来说操作std::string 的时候编译后的代码是去操作char*的地址,你这样去找:去在反汇编里面去寻找这个std::string 的操作,就能大概找到char*的偏移地址。
比如某个地方在对std::string 读值,那么编译后的汇编一眼就能看到真正的char*偏移。
chmlqw std::string 本质上是一个结构体,不同stl版本实现不一样。需要根据实际情况读取。下面是我常遇到的 struct std::string { char buffer[0x10]; ...
stack overflow上面有一段,就是楼上说的:https://stackoverflow.com/questions/68243063/read-value-from-frida-hooked-native-method-basic-string-parameter
相关知识:https://joellaity.com/2020/01/31/string.html
在clang编译的情况下,std::string是短字符串还是长字符串模式由整个字符串3个指针大小的数据的第一个字节的最低端比特位判断(实现保证std::string内部已分配内存的长度永远是偶数)
liuxucau 较长字符串和较短字符串内存分布是不一样的,要进行一下判断,下面是从某位大佬那里学来的: function readStdString(str){ const isTiny = (str.r ...