C语言汇编dll注入获取x64寄存器值的方法是什么
发表于:2025-02-13 作者:千家信息网编辑
千家信息网最后更新 2025年02月13日,本篇内容主要讲解"C语言汇编dll注入获取x64寄存器值的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言汇编dll注入获取x64寄存器值的
千家信息网最后更新 2025年02月13日C语言汇编dll注入获取x64寄存器值的方法是什么
本篇内容主要讲解"C语言汇编dll注入获取x64寄存器值的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言汇编dll注入获取x64寄存器值的方法是什么"吧!
/* * @Author: https://github.com/zengfr * @Date: 2020-10-27 10:35:05 * @Last Modified by: https://github.com/zengfr * @Last Modified time: 2020-10-27 10:35:05 */#include#include extern "C" __declspec(dllexport) __cdecl char* getAuthor(){ char author[] = "Author:https://github.com/zengfr"; char *pstr = author; return pstr;}extern "C" __declspec(dllexport) __cdecl void * getRegisters(){ static uint64_t rs[16]={ 0l,0,0,0l, 0,0,0,0, 0,0,0,0, 0,0,0,0l}; __asm__ __volatile__( " mov %%eax,%0 ;\n\t" " mov %%ebx,%1 ;\n\t" " mov %%ecx,%2 ;\n\t" " mov %%edx,%3 ;\n\t" " mov %%ebp,%4 ;\n\t" " mov %%esp,%5 ;\n\t" " mov %%esi,%6 ;\n\t" " mov %%edi,%7 ;\n\t" " mov %%r8,%8 ;\n\t" " mov %%r9,%9 ;\n\t" " mov %%cs, ;\n\t" " mov %%ds, ;\n\t" " mov %%es, ;\n\t" " mov %%ss, ;\n\t" :"=m"(rs[0]),"=m"(rs[1]),"=m"(rs[2]) ,"=m"(rs[3]) ,"=m"(rs[4]),"=m"(rs[5]),"=m"(rs[6]) ,"=m"(rs[7]) ,"=m"(rs[8]),"=m"(rs[9]),"=m"(rs[10]),"=m"(rs[11]) ,"=m"(rs[12]),"=m"(rs[13]) //: /* no registers */ //: /* no registers */ ); return rs;}extern "C" __declspec(dllexport) __cdecl void * getBaseRegisters(){ static uint64_t rs[8]={0l,0,0,0l,0,0l,0,0l}; __asm__ __volatile__( " mov %%eax,%0 ;\n\t" " mov %%ebx,%1 ;\n\t" " mov %%ecx,%2 ;\n\t" " mov %%edx,%3 ;\n\t" " mov %%ebp,%4 ;\n\t" " mov %%esp,%5 ;\n\t" " mov %%esi,%6 ;\n\t" " mov %%edi,%7 ;\n\t" :"=m"(rs[0]),"=m"(rs[1]),"=m"(rs[2]) ,"=m"(rs[3]) ,"=m"(rs[4]),"=m"(rs[5]),"=m"(rs[6]) ,"=m"(rs[7]) //: /* no registers */ //: /* no registers */ ); return rs;}extern "C" __declspec(dllexport) __cdecl void * getSegmentRegisters(){ static uint64_t rs[8]={0l,0,0,0l,0,0l,0,0l}; __asm__ __volatile__( " mov %%cs,%0 ;\n\t" " mov %%ds,%1 ;\n\t" " mov %%es,%2 ;\n\t" " mov %%fs,%3 ;\n\t" " mov %%gs,%4 ;\n\t" " mov %%ss,%5 ;\n\t" :"=m"(rs[0]),"=m"(rs[1]),"=m"(rs[2]) ,"=m"(rs[3]) ,"=m"(rs[4]),"=m"(rs[5]) //: /* no registers */ //: /* no registers */ ); return rs;}extern "C" __declspec(dllexport) __cdecl void * getCpRegisters(){ static uint64_t rs[8]={ 0l,0l,0l,0l, 0l,0l,0l,0l }; __asm__ __volatile__( " mov %%r8,%0 ;\n\t" " mov %%r9,%1 ;\n\t" " mov %%r10,%2 ;\n\t" " mov %%r11,%3 ;\n\t" " mov %%r12,%4 ;\n\t" " mov %%r13,%5 ;\n\t" " mov %%r14,%6 ;\n\t" " mov %%r15,%7 ;\n\t" :"=m"(rs[0]),"=m"(rs[1]),"=m"(rs[2]) ,"=m"(rs[3]) ,"=m"(rs[4]),"=m"(rs[5]),"=m"(rs[6]) ,"=m"(rs[7]) //: /* no registers */ //: /* no registers */ ); return rs;}extern "C" __declspec(dllexport) __cdecl inline uint64_t readMem64(uint64_t *reg){ uint64_t value; __asm__ __volatile__( "mov %[reg], %[val]\n" : [val] "=rm" (value) : [reg] "rm" (*reg) ); return value;}extern "C" __declspec(dllexport) __cdecl inline uint32_t readMem32(uint32_t *reg){ uint32_t value; __asm__ __volatile__( "mov %[reg], %[val]\n" : [val] "=rm" (value) : [reg] "rm" (*reg) ); return value;}
到此,相信大家对"C语言汇编dll注入获取x64寄存器值的方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
方法
寄存器
语言
内容
学习
实用
更深
兴趣
实用性
实际
操作简单
更多
朋友
网站
频道
查询
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络连接不上显示服务器错误
设置数据库单位
山西数据库安全箱价目表
上位机软件开发 专业
三亚做软件开发的公司
数据库查询最小的表名
网络安全理想信息产业
数据库 pk_
贵州软件开发有限公司有哪些
魔兽世界怀旧服新开服务器拿虫子
多服务器手游
蓬莱软件开发公司有哪些
服务器自带的动态ip怎么关
c 查找sql数据库数据
服务器c盘空间调整大小
微商加人软件开发
服务器ip和电脑ip
网络安全特性隐藏
数据库客户端使用教程
区块链网络安全应用实验报告
两台服务器远程备份同步
徐州智慧社区网络安全
此系统未注册到授权服务器
sql数据库导出数据
国泰安数据库显示无权限
想从事软件开发学哪个语言
网络安全的信息安全
中通信息网络技术
杰理软件开发
ddns搭建大型服务器靠谱吗