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