首页
社区
课程
招聘
[讨论]R3函数重写3-ReadProcessMemory
发表于: 2023-3-24 10:49 5983

[讨论]R3函数重写3-ReadProcessMemory

2023-3-24 10:49
5983

原函数参数数值 图片描述
寻找syscall:
图片描述
图片描述
图片描述
下断
图片描述
前四个参数一致
图片描述
第五个参数有点奇怪
图片描述
对这个参数下断
图片描述
可以判定ntdll.zwreadvirtalmomry的第五个参数是放在了堆栈rsp+78里,但是ntdll.zwreadvirtalmomry第五个参数跟readvirtalmomry第五个参数不一样
图片描述
在ret下断观察实际读取大小的值,
返回3环实际读取大小的值放在rsp+38
图片描述
单步走出call,可以看到拿rsp+30也就是实际读取大小(单浮点是四字节)的值给了rcx,rcx就给了rdx里面的地址,rdx刚才分析过是原先函数五个参数的地址。
可得ntdll.zwreadvirtalmomry跟
readvirtalmomry前四个参数一样,

 

图片描述

 

#include<Windows.h>

 

#include<stdio.h>
EXTERN_C void myFuntion(HANDLE handle, PVOID address, float* buffer, int b, PVOID c);
PVOID address =(PVOID) 0x227AEAE5BC0;//6ABBB01060
HANDLE handle = 0;
float A = 0;
SIZE_T B = 0;

 

int main() {
handle = OpenProcess(PROCESS_ALL_ACCESS, false, 0x1EF4);
if (handle <= 0) {
printf("OpenProcess ERROR\n");
return 0;
}
printf("myFuntion%p\n", myFuntion);
while (1)
{
myFuntion(handle, (PVOID)0x9B59D59058, &A, 4,&B);//B没有接收到实际读取大小的值
printf("buffer is%f\n", A);
Sleep(1000);
}
}
.CODE
myFuntion PROC
mov r10,rcx
mov eax,63
syscall
ret
myFuntion ENDP
END


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 3895
活跃值: (3147)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2

Github上SysWhispers,DirectCall之类项目一抓一大把,上面几百个函数整整齐齐,就不用去逆向了

最后于 2023-3-24 14:51 被ANormalUser编辑 ,原因:
2023-3-24 14:49
0
游客
登录 | 注册 方可回帖
返回
//