关于C# 直接访问内容地址值的问题

人傻且呆但不萌 2015-09-11 11:21:57

做一个项目是这样的:

从给出的指定内容地址中直接读到值:如下图所展示的工具




可以直接访问值,

我尝试过Marshal.ReadByte方法,不过貌似读出来的结果不尽如人意,因为他的值和工具的值完全不同,我查了一下资料貌似是因为内存保护的原因,现在查了很多,都没有合适的资料提供,麻烦有知道解决方案的能提供一下,后续高分送上 :)
...全文
337 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2015-09-11
  • 打赏
  • 举报
回复
_lee_chong 2015-09-11
  • 打赏
  • 举报
回复
内存的限制是在操作系统上,语言关系不大,c/c++可以的,c#也可以实现, 重点在于。。。你从 指定内存地址 读取数据。。。 “内存”是指的进程内内存。。还是物理内存,还是跨进程内存。。。 平台 是windows linux 还是mac等 你先搞清楚你实际需求,然后再去搜索,网上有相关实现的,其实就是系统 api的调用了,原生都是c的,但是c#也是可以调用的(windows)
於黾 2015-09-11
  • 打赏
  • 举报
回复
C#对内存的保护机制做的还是很完善的 你不要老企图破解框架本身的机制 还是换种跟底层更近的语言,绕开这些机制
  • 打赏
  • 举报
回复
引用 6 楼 starfd 的回复:
c#也可以操作内存,unsafe代码,但这块其实也就是直接操作指针的,可惜我不懂这块……
C#操作的内存都是先传入一个指定的线程的地址,然后进行后续的操作,没有说脱离线程变量,直接输入任意内存地址的方法,找了很多都没有结果。
  • 打赏
  • 举报
回复
c#也可以操作内存,unsafe代码,但这块其实也就是直接操作指针的,可惜我不懂这块……
  • 打赏
  • 举报
回复
你直接找zhao4老师啊,他专门弄C和C++的
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
你这是要用c++直接操作内存地址?然后再用c#来调用dll?这问题还是发c和c++版块比较靠谱吧
那个版块不认识人,我本还指望能用C# 来解决问题的
  • 打赏
  • 举报
回复
你这是要用c++直接操作内存地址?然后再用c#来调用dll?这问题还是发c和c++版块比较靠谱吧
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
什么是内容地址值? 你指的是内存地址吗? 如果要获取内存地址,最好使用C++之类的跟底层更近的编译器
内存地址,sorry,打五笔都出错 我已经尝试过python,号称胶水语言,引用他的模块也不能访问到直接的值
於黾 2015-09-11
  • 打赏
  • 举报
回复
什么是内容地址值? 你指的是内存地址吗? 如果要获取内存地址,最好使用C++之类的跟底层更近的编译器
  • 打赏
  • 举报
回复
引用 14 楼 lc316546079 的回复:
[quote=引用 11 楼 nice_fish 的回复:] [quote=引用 9 楼 lc316546079 的回复:] 内存的限制是在操作系统上,语言关系不大,c/c++可以的,c#也可以实现, 重点在于。。。你从 指定内存地址 读取数据。。。 “内存”是指的进程内内存。。还是物理内存,还是跨进程内存。。。 平台 是windows linux 还是mac等 你先搞清楚你实际需求,然后再去搜索,网上有相关实现的,其实就是系统 api的调用了,原生都是c的,但是c#也是可以调用的(windows)
兄台教训的在理,我没有补充好题目的说明 : windows平台下的内存的实际值 而到底是物理内存,还是进程内存,我暂时没有明白, 因为我使用的是:RwPortableX64V1.6.7 ,这个软件所访问的是物理内存还是进程内存?[/quote] 我没用过你说的工具,不过如果你那个是类似 ce(Cheat Engine 我最早用来修改某些单机游戏的金币数量之类的东西。。)的话,那就是如楼上几位说的读取别的进程内存的接口了[/quote] 这个软件读出的是物理地址的值,而我们的操作方法都是去获取进程地址值,我去C版块问过了,目前的合适的解决方案是C语言的WinIO.sys 我正在看相应的文档和说明
  • 打赏
  • 举报
回复
引用 13 楼 crystal_lz 的回复:
几年前做的一个 内存修改器 估计代码有些乱 源码地址 http://download.csdn.net/detail/crystal_lz/4555991 用的是 Write/ReadProcessMemory 读取写入内存的
感谢分享 :)
_lee_chong 2015-09-11
  • 打赏
  • 举报
回复
引用 11 楼 nice_fish 的回复:
[quote=引用 9 楼 lc316546079 的回复:] 内存的限制是在操作系统上,语言关系不大,c/c++可以的,c#也可以实现, 重点在于。。。你从 指定内存地址 读取数据。。。 “内存”是指的进程内内存。。还是物理内存,还是跨进程内存。。。 平台 是windows linux 还是mac等 你先搞清楚你实际需求,然后再去搜索,网上有相关实现的,其实就是系统 api的调用了,原生都是c的,但是c#也是可以调用的(windows)
兄台教训的在理,我没有补充好题目的说明 : windows平台下的内存的实际值 而到底是物理内存,还是进程内存,我暂时没有明白, 因为我使用的是:RwPortableX64V1.6.7 ,这个软件所访问的是物理内存还是进程内存?[/quote] 我没用过你说的工具,不过如果你那个是类似 ce(Cheat Engine 我最早用来修改某些单机游戏的金币数量之类的东西。。)的话,那就是如楼上几位说的读取别的进程内存的接口了
crystal_lz 2015-09-11
  • 打赏
  • 举报
回复

几年前做的一个 内存修改器 估计代码有些乱
源码地址
http://download.csdn.net/detail/crystal_lz/4555991
用的是 Write/ReadProcessMemory 读取写入内存的
於黾 2015-09-11
  • 打赏
  • 举报
回复
引用 11 楼 nice_fish 的回复:
[quote=引用 9 楼 lc316546079 的回复:] 内存的限制是在操作系统上,语言关系不大,c/c++可以的,c#也可以实现, 重点在于。。。你从 指定内存地址 读取数据。。。 “内存”是指的进程内内存。。还是物理内存,还是跨进程内存。。。 平台 是windows linux 还是mac等 你先搞清楚你实际需求,然后再去搜索,网上有相关实现的,其实就是系统 api的调用了,原生都是c的,但是c#也是可以调用的(windows)
兄台教训的在理,我没有补充好题目的说明 : windows平台下的内存的实际值 而到底是物理内存,还是进程内存,我暂时没有明白, 因为我使用的是:RwPortableX64V1.6.7 ,这个软件所访问的是物理内存还是进程内存?[/quote] 这么说吧,你到底是跨进程访问内存,还是不跨进程 就是你访问的是这个软件自身的内存地址,还是其他软件的内存? 如果是物理内存,那么跟进程是无关的,就是说,我就是想从这个内存里取东西,不管有没有进程占用它
  • 打赏
  • 举报
回复
引用 9 楼 lc316546079 的回复:
内存的限制是在操作系统上,语言关系不大,c/c++可以的,c#也可以实现, 重点在于。。。你从 指定内存地址 读取数据。。。 “内存”是指的进程内内存。。还是物理内存,还是跨进程内存。。。 平台 是windows linux 还是mac等 你先搞清楚你实际需求,然后再去搜索,网上有相关实现的,其实就是系统 api的调用了,原生都是c的,但是c#也是可以调用的(windows)
兄台教训的在理,我没有补充好题目的说明 : windows平台下的内存的实际值 而到底是物理内存,还是进程内存,我暂时没有明白, 因为我使用的是:RwPortableX64V1.6.7 ,这个软件所访问的是物理内存还是进程内存?

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧