桐姥爷 发表于 2024-9-19 11:19

感觉一个函数的参数不太对,这是什么原因呢

比如说这个send函数,它的函数签名是这样:int __stdcall send(SOCKET s, const char *buf, int len, int flags),有四个参数,其中第二个参数是一个指针,

然后这是在x64dbg里面的:


rcx是第一个参数,rdx是第二个参数,这样没错吧?
但是这个rdx中的值怎么也不像一个指针,所以我不太明白了。。。

lies2014 发表于 2024-9-19 12:12

rdx 保存的值是指针,即 0x2481EEAB0B0 是指针,指针指向的地址不就是 buf 的数据吗
如果参数是 const char buf,0x2481EEAB0B0 就是数据
参数是 const char *buf,0x2481EEAB0B0 就是指针,指针指向的地址就是数据
const char **buf 才是指向指针的指针,这时 0x2481EEAB0B0 指向的地址就是指针,二级指针指向的地址才是数据

liert 发表于 2024-9-19 12:55

指针不就是一个内存地址吗,那有什么像不像,你可能只是感觉这个地址不太正常,但是你的其他寄存器也有指向24开头这个地址区域的

JuncoJet 发表于 2024-9-19 13:05

0x1F长度二进制数据
页: [1]
查看完整版本: 感觉一个函数的参数不太对,这是什么原因呢