当前位置: 首页 > news >正文

网站建设 需求分析报告搜索引擎优化的意思

网站建设 需求分析报告,搜索引擎优化的意思,北京做网站的大公司,微信公众平台一定要找网站做吗当读者需要获取到特定进程内的寄存器信息时#xff0c;则需要在上述代码中进行完善#xff0c;首先需要编写CREATE_PROCESS_DEBUG_EVENT事件#xff0c;程序被首次加载进入内存时会被触发此事件#xff0c;在该事件内首先我们通过lpStartAddress属性获取到当前程序的入口地…当读者需要获取到特定进程内的寄存器信息时则需要在上述代码中进行完善首先需要编写CREATE_PROCESS_DEBUG_EVENT事件程序被首次加载进入内存时会被触发此事件在该事件内首先我们通过lpStartAddress属性获取到当前程序的入口地址并通过SuspendThread暂停程序的运行当被暂停后则我没就可以通过ReadProcessMemory读取当前位置的一个字节机器码目的是保存以便于后期的恢复接着通过WriteProcessMemory向对端(void*)dwAddr地址写出一个0xCC断点该断点则是int3停机指令最后ResumeThread恢复这个线程的运行此时程序中因存在断点则会触发一个EXCEPTION_DEBUG_EVENT异常事件。 case CREATE_PROCESS_DEBUG_EVENT: {// 获取入口地址 0x0 可以增加偏移到入口后任意位置DWORD dwAddr 0x0 (DWORD)de.u.CreateProcessInfo.lpStartAddress;// 暂停线程SuspendThread(de.u.CreateProcessInfo.hThread);// 读取入口地址处的字节码ReadProcessMemory(de.u.CreateProcessInfo.hProcess, (const void*)dwAddr, bCode, sizeof(BYTE), dwNum);// 在入口地址处写入 0xCC 即写入 INT 3 暂停进程执行WriteProcessMemory(de.u.CreateProcessInfo.hProcess, (void*)dwAddr, bCC, sizeof(BYTE), dwNum);// 恢复线程ResumeThread(de.u.CreateProcessInfo.hThread);break; }当异常断点被触发后则下一步就会触发两次异常第一次异常我们可以使用break直接跳过因为此断点通常为系统断点而第二次断点则是我们自己设置的int3断点此时需要将该请求发送至OnException异常处理函数对其进行处理在传递时需要给与de调试事件以及bCode原始的机器码 case EXCEPTION_DEBUG_EVENT: {switch (dwCC_Count){// 第0次是系统断点,这里我们直接跳过case 0:dwCC_Count; break;// 第1次断点,我们让他执行下面的函数case 1:OnException(de, bCode); dwCC_Count; break;} }异常事件会被流转到OnException(DEBUG_EVENT* pDebug, BYTE* bCode)函数内在本函数内我们首先通过使用OpenProcess/OpenThread两个函数得到当前进程的句柄信息接着使用SuspendThread(hThread)暂时暂停进程内线程的执行通过调用ReadProcessMemory得到线程上下文异常产生的首地址当得到首地址后则可以调用GetThreadContext(hThread, context)得到当前线程的上下文一旦上下文被获取到则读者即可通过context.的方式得到当前程序的所有寄存器信息为了让程序正常执行当读取结束后通过WriteProcessMemory我们将原始机器码写回到内存中并SetThreadContext设置当前上下文最后使用ResumeThread运行该线程 void OnException(DEBUG_EVENT* pDebug, BYTE* bCode) {CONTEXT context;DWORD dwNum;BYTE bTmp;HANDLE hProcess OpenProcess(PROCESS_ALL_ACCESS, FALSE, pDebug-dwProcessId);HANDLE hThread OpenThread(THREAD_ALL_ACCESS, FALSE, pDebug-dwThreadId);// 暂停指定的线程SuspendThread(hThread);// 读取出异常首地址ReadProcessMemory(hProcess, pDebug-u.Exception.ExceptionRecord.ExceptionAddress, bTmp, sizeof(BYTE), dwNum);context.ContextFlags CONTEXT_FULL;GetThreadContext(hThread, context);printf(\n);printf(EAX 0x%08X | EBX 0x%08X | ECX 0x%08X | EDX 0x%08X \n,context.Eax, context.Ebx, context.Ecx, context.Edx);printf(EBP 0x%08X | ESP 0x%08X | ESI 0x%08X | EDI 0x%08X \n\n,context.Ebp, context.Esp, context.Esi, context.Edi);printf(EIP 0x%08X | EFLAGS 0x%08X\n\n, context.Eip, context.EFlags);// 将刚才的CC断点取消,也就是回写原始指令集WriteProcessMemory(hProcess, pDebug-u.Exception.ExceptionRecord.ExceptionAddress, bCode, sizeof(BYTE), dwNum);context.Eip--;// 设置线程上下文SetThreadContext(hThread, context);// printf(进程句柄: 0x%08X \n, pDebug-u.CreateProcessInfo.hProcess);// printf(主线程句柄: 0x%08X \n, pDebug-u.CreateProcessInfo.hThread);printf(虚拟入口点: 0x%08X \n, pDebug-u.CreateProcessInfo.lpBaseOfImage);// 恢复线程执行ResumeThread(hThread);CloseHandle(hThread);CloseHandle(hProcess); }当这段程序被运行后读者可看到如下图所示的输出信息该进程中当前寄存器的状态基本上都可以被获取到 本文作者 王瑞 本文链接 https://www.lyshark.com/post/94ad4ba.html 版权声明 本博客所有文章除特别声明外均采用 BY-NC-SA 许可协议。转载请注明出处
http://www.w-s-a.com/news/94096/

相关文章:

  • 网站制作哪家好商城网站建设预算要多少钱
  • 怎么做律所的官方网站微网站可以做商城吗
  • 通用网站后台管理系统(php版)网站备案ip查询网站查询
  • 制作网站代码吗江阴网站建设推广
  • 汕头建网站wordpress文章网址采集
  • 十大景观设计网站用vue框架做的网站
  • 福建省建设监理网官方网站做外贸网站卖什么东西好
  • 公司做网站排名东莞关键词优化推广
  • 连云港做企业网站公司全网营销与seo
  • 电子毕业设计代做网站wordpress 插件放在那
  • 黄石规划建设局网站怎么做存储网站
  • 网站安装wordpress滨江网站建设
  • 河南官网网站建设一般使用的分辨率显示密度是
  • dedecms新网站 上传到万网的空间宝洁公司网站做的怎么样
  • 网站建设语录优惠券的网站怎么做的
  • 白山市住房和建设局网站有实力高端网站设计地址
  • 沧州网站建设制作设计优化深圳网站自然优化
  • 企业做网站 乐云seowordpress中修改html
  • 网站细节门户wordpress主题下载
  • 全景网站模版wordpress套餐
  • 华为云建网站dw制作一个手机网站模板
  • 定陶菏泽网站建设河北新出现的传染病
  • 商业网站建设案例教程郑州服装网站建设公司
  • 网站内容怎么做专业的企业管理软件
  • 深圳网站制作公司排名微网站和微信公共平台的区别
  • 权威的唐山网站建设扁平网站欣赏
  • 网站外链建设工作计划应用公园app免费制作
  • 东莞营销型网站建设全自动建站系统
  • 网络在线培训网站建设方案虚拟主机配置WordPress
  • 建设工程信息查询哪个网站好台州做优化