小标
2019-05-31
来源 :
阅读 1693
评论 0
摘要:本文主要向大家介绍了C/C++知识点之通过进程挂靠实现改其它进程的数据,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之通过进程挂靠实现改其它进程的数据,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

3环
#include<stdio.h>int main() { char *ch = ""allenboy""; printf(""%c,%x"", ch, ch);
getchar(); printf(""%c,%x"", ch, ch);
getchar();
}0环
#include <ntifs.h>VOID DriverUnload(PDRIVER_OBJECT pDriver);// 根据PID返回进程EPROCESS,失败返回NULLPEPROCESS LookupProcess(HANDLE hPid){
PEPROCESS pEProcess = NULL; if (NT_SUCCESS(PsLookupProcessByProcessId(
hPid, &pEProcess))) return pEProcess; return NULL;
}VOID ChangeData(ULONG uId){
KAPC_STATE ks; //1 根据ID获得进程内核对象
PEPROCESS pEprocess = LookupProcess((HANDLE)uId); //2 挂靠到此进程上去 //需要注意:不能挂靠之后,将内存中的数据往用户层地址存储,是不对的。 //因为当挂靠到目标进程之后,用户层地址就是目标进程的了,也就存储到 //目标进程中,而且目标进程的那个地址不一定有效,可能造成崩溃。
KeStackAttachProcess(
pEprocess,
&ks
); //3 修改内存 char * p = (char *)0x1dfaf0;
p[5] = 'h';
p[6] = 'a';
p[7] = 'h';
p[8] = 'a';
p[9] = '\0'; //4 解除挂靠
KeUnstackDetachProcess(&ks);
}NTSTATUS DriverEntry(PDRIVER_OBJECT pDriver, PUNICODE_STRING pPath){
UNREFERENCED_PARAMETER(pPath);
DbgBreakPoint();
ChangeData(1716);
pDriver->DriverUnload = DriverUnload; return STATUS_SUCCESS;
}VOID DriverUnload(PDRIVER_OBJECT pDriver){
UNREFERENCED_PARAMETER(pDriver);
}本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号