能力值:
( LV3,RANK:20 )
2 楼
都还没有Recv哪里来的数据? 看的不是缓冲区的随机内容吗
能力值:
( LV1,RANK:0 )
3 楼
能力值:
( LV1,RANK:0 )
4 楼
ANormalUser
都还没有Recv哪里来的数据?
看的不是缓冲区的随机内容吗
大佬,那WSARcev的返回数据,能被修改吗
能力值:
( LV3,RANK:20 )
5 楼
ACT忆梦
大佬,那WSARcev的返回数据,能被修改吗
return前缓冲区可以写的啊(
能力值:
( LV1,RANK:0 )
6 楼
能力值:
( LV1,RANK:0 )
7 楼
要看同步还是异步,同步确实WSARcev返回就有数据,而异步是即时返回的但缓冲区没有数据,数据在另外的等待接口或事件里,参考IOCP。
最后于 2024-5-19 22:29
被mb_hgrbqfun编辑
,原因:
能力值:
( LV10,RANK:163 )
8 楼
断点断下后内存窗口查看数据地址, 这个时候还没有执行完recv操作,所以内存中不存在数据,需要ctrl + f9运行到返回,这个时候再看前面的内存地址就是接收的数据。
能力值:
( LV1,RANK:0 )
9 楼
mb_hgrbqfun
要看同步还是异步,同步确实WSARcev返回就有数据,而异步是即时返回的但缓冲区没有数据,数据在另外的等待接口或事件里,参考IOCP。
我觉得是异步,谢谢老哥,我去看看
能力值:
( LV1,RANK:0 )
10 楼
yimingqpa
断点断下后内存窗口查看数据地址, 这个时候还没有执行完recv操作,所以内存中不存在数据,需要ctrl + f9运行到返回,这个时候再看前面的内存地址就是接收的数据。
我想写代码 hook 修改 recv,它只有执行到返回,数据才被写入到内存,我用的是frida也是刚学,还不太清楚,通过什么方式等他有了数据再进行更改
能力值:
( LV1,RANK:0 )
11 楼
ACT忆梦
我想写代码 hook 修改 recv,它只有执行到返回,数据才被写入到内存,我用的是frida也是刚学,还不太清楚,通过什么方式等他有了数据再进行更改[em_5]
肯定是recv返回才有数据的,你要先在frida的onEnter记录保存缓冲区的地址,然后在frida的onLeave里根据返回长度获取去读取缓冲区的数据,数据在onLeave才能读,
onEnter: function (args) {
...
},
onLeave: function (retval) {
if (retval.toInt32() > 0) {
确保能访问args
var data = Memory.readByteArray(args[1], retval.toInt32());
能力值:
( LV1,RANK:0 )
12 楼
mb_hgrbqfun
肯定是recv返回才有数据的,你要先在frida的onEnter记录保存缓冲区的地址,然后在frida的onLeave里根据返回长度获取去读取缓冲区的数据,数据在onLeave才能读,
onEnte ...
大佬,我是这么做的,它能够读取到数据,但是写入用onLeave,那么也是WSARcev执行完后才会调用,hook写入数据,那么在之前WSARcev就已经把数据包返回到本地了,这个时候再写也没什么用了,我就是这个问题,我不知道该怎么做了
能力值:
( LV1,RANK:0 )
13 楼
mb_hgrbqfun
肯定是recv返回才有数据的,你要先在frida的onEnter记录保存缓冲区的地址,然后在frida的onLeave里根据返回长度获取去读取缓冲区的数据,数据在onLeave才能读,
onEnte ...
var lpBuffersPtr;
Interceptor.attach(Module.getExportByName('Ws2_32.dll', 'WSARecv'), {
onEnter: function (args) {
lpBuffersPtr = args[1];
},
onLeave: function (retval) {
var lpBuffers = Memory.readPointer(lpBuffersPtr);
if (lpBuffers == 65536) {
var buf = Memory.readPointer(lpBuffersPtr.add(4));
var newData = [0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x20];
Memory.writeByteArray(buf, newData);
var byteArray = Memory.readByteArray(buf, 384);
console.log(byteArray);
}
}
能力值:
( LV1,RANK:0 )
14 楼
mb_hgrbqfun
肯定是recv返回才有数据的,你要先在frida的onEnter记录保存缓冲区的地址,然后在frida的onLeave里根据返回长度获取去读取缓冲区的数据,数据在onLeave才能读,
onEnte ...
我x64dbg调试发现,它WSARcev返回后数据已经写入了而且数据包已经到本地了,再往下调试发现才到frida的hook这个时候再去修改数据已经没有意义了,数据包已经到本地了,大佬这个该怎么搞
能力值:
( LV1,RANK:0 )
15 楼
mb_hgrbqfun
肯定是recv返回才有数据的,你要先在frida的onEnter记录保存缓冲区的地址,然后在frida的onLeave里根据返回长度获取去读取缓冲区的数据,数据在onLeave才能读,
onEnte ...
但是我用WPE这个工具它又可以实现修改WSARcev返回数据,不知道它是怎么实现的
能力值:
( LV1,RANK:0 )
16 楼
不能吧,frida onLeave是可以修改返回值的啊,此时还没有返回,可以修改缓冲区的,
能力值:
( LV1,RANK:0 )
17 楼
写入的数据比原来的数据大怎么办,大佬
最后于 2024-5-21 19:49
被ACT忆梦编辑
,原因: