怎样从内存中ios 获取对象内存地址数据

【求助】请问,window c/c++如何获取某一时刻整个物理内存中的数据? - 看雪安全论坛
『软件逆向』 [综合性论坛]本版讨论的主题包括:调试逆向、系统底层、商业保护、虚拟机保护、.NET平台等安全相关的话题。
注册日期: Oct 2013
现金: 1 Kx
获感谢文章数:0获会员感谢数:0
, 22:39:57
【求助】请问,window c/c++如何获取某一时刻整个物理内存中的数据?
试过的方法:
1、使用MmMapIoSpace,将物理内存地址映射成虚拟内存地址,然后访问虚拟内存地址。但是这种方法在访问某些物理地址的时候会使系统崩溃,猜测是因为访问了没有挂载的物理地址。
2、试图遍历虚拟内存空间,这样就需要有一个函数可以探测遍历的当前虚拟内存是否可读,但是没有找到这样的函数。只找到ProbeForRead,该函数只能在内核态判断某一用户态的虚拟内存是否可读,不能用户内核态虚拟地址的判断。并且在64位系统下虚拟地址空间非常大,遍历也不太现实。
3、window系统的睡眠功能的实现是将点击睡眠按钮后的物理内存以及cpu状态信息保存在hiberfil.sys系统文件中,唤醒的时候从hiberfil.sys中恢复出物理内存,和cpu状态。猜测window应该是调用一系列的底层函数,或者undocument函数来完成该功能的,但是在网上没有找到实现方式和原理。
上面三个方法都没走通。。。
请问各路大神有没有什么办法能获取整个物理内存的数据呢?
被 lsabcd 最后编辑
注册日期: Jun 2009
现金: 83 Kx
致谢数: 14
获感谢文章数:0获会员感谢数:0
, 02:59:42
cheatengine
&Ce源码应该有吧。
注册日期: Aug 2010
现金: 451 Kx
获感谢文章数:7获会员感谢数:8
, 08:26:45
驱动占用的内存,所有进程是一样的,位于0x以上,0x7fffffff以下的地址空间,每个进程分别使用各自的虚拟内存,你需要遍历所有的进程,拷贝出每个进程的0x7fffffff以下的空间,然后再拷贝一份0x以上的空间就可以了。
注册日期: Oct 2013
现金: 1 Kx
获感谢文章数:0获会员感谢数:0
, 09:44:25
最初由 xed发布
cheatengine
&Ce源码应该有吧。...
cheat&engine的源码是delphi的吧,ce的原理应该和3楼说的类似,遍历所有进程,逐个进程访问内存。谢谢~
被 lsabcd 最后编辑
注册日期: Oct 2013
现金: 1 Kx
获感谢文章数:0获会员感谢数:0
, 09:50:25
最初由 aait发布
驱动占用的内存,所有进程是一样的,位于0x以上,0x7fffffff以下的地址空间,每个进程分别使用各自的虚拟内存,你需要遍历所有的进程,拷贝出每个进程的0x7fffffff以下的空间,然后再拷贝一份0x以上的空间就可以了。...
谢谢啦~也考虑过这种方法,我想做得是对比两个时刻,同一物理内存地址上的数据是否改变。采取的办法就是两个时刻分别获取所有物理内存的信息,然后对比。你说的方法,逐个进程读内存可以获取此刻所有使用的内存,但是无法逐一对比。并且进程的同一虚拟地址在不同时刻是可能映射到不同的物理地址上去的吧。
注册日期: May 2010
现金: 100 Kx
获感谢文章数:0获会员感谢数:0
, 16:37:57
可以逆ntldr保护模式osload里面有hibernation还原代码
您不可以发表主题
您不可以回复帖子
您不可以上传附件
您不可以编辑自己的帖子
论坛论坛启用
用户控制面板
会员在线状态
『求助问答』
『经典问答』
『资料导航』
『Android安全』
『iOS安全』
『软件逆向』
『编程技术』
『加壳脱壳』
『密码算法』
『资源下载』
『WEB安全』
『二进制漏洞』
『看雪众测』
『CrackMe』
『招聘专区』
『职业生涯』
『15PB培训』
『麦洛克菲培训』
『外文翻译』
『茶余饭后』
『安全资讯』
『论坛活动』
6)PEDIY Crackme竞赛2009
7)看雪十周年专版
8)腾讯公司2010软件安全竞赛
9)2011 Exploit Me竞赛
『图书项目版』
《加密与解密(第三版)》
《C++反汇编与逆向分析技术揭秘》
《Android软件安全与逆向分析》
『论坛版务』
相似的主题
『经典问答』
『软件逆向』
『求助问答』
『求助问答』
『求助问答』
所有时间均为北京时间, 现在的时间是 .
&&& 看雪学院()
| 提供带宽资源
|&微信公众帐号:只需一步,快速开始
后使用快捷导航没有帐号?
查看: 3026|回复: 7
从内存中读取1024字节的数据,8086至少要读 512 次,80386至少要读 256 次
累计签到:14 天连续签到:1 天
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
从内存中读取1024字节的数据,8086至少要读 512 次,80386至少要读 256 次
8086为什么是512 次啊可以简单的回答下吗
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:41 天连续签到:0 天
1字节=8位 1024字节=8192位&&8086是16位计算机一次读取16位 512次16位
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:117 天连续签到:0 天
8086有16根数据总线,每次能够读取16位的数据, 16位 = 2字节,所以1024字节要至少读取512次
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:14 天连续签到:1 天
<font color="#085256 发表于
1字节=8位 1024字节=8192位&&8086是16位计算机一次读取16位 512次16位
谢谢啊,你一说,我就不迷糊了。我想在问下,怎么就知道CPU一次能读取多少数据啊,
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:41 天连续签到:0 天
a5753240 发表于
谢谢啊,你一说,我就不迷糊了。我想在问下,怎么就知道CPU一次能读取多少数据啊,
8086 有16根数据总线一次可以传送16位数据
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:108 天连续签到:1 天
楼上已经回答了
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:3 天连续签到:0 天
8086一次读2个字节,因为是16位的
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:67 天连续签到:0 天
8086 总线16 一次2字节 386 总线32.............
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
&#8226;&#8226;&#8226;(
Powered byliguottkl 的BLOG
用户名:liguottkl
文章数:42
评论数:19
访问量:134122
注册日期:
阅读量:5863
阅读量:12276
阅读量:389796
阅读量:1080798
51CTO推荐博文
1.引用Microsoft.Office.Interop.Excel
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&private&void&btnImport_Click(object&sender,&EventArgs&e) &&&&&&&&&{ &&&&&&&&&&&&&string&worksheetname&=&string.E &&&&&&&&&&&&&importtpye&=&cmbTicketType.T &&&&&&&&&&&&&supplier&=&cmbSupplier.SelectedValue.ToString(); &&&&&&&&&&&&&&#region&导入本地Excel文件 &&&&&&&&&&&&&&&&&&&&&&&&&&&OpenFileDialog&file&=&new&OpenFileDialog(); &&&&&&&&&&&&&file.Filter&=&&文档(*.xls)|*.xls&; &&&&&&&&&&&&&if&(file.ShowDialog()&==&DialogResult.OK) &&&&&&&&&&&&&&&&&btnImport.Tag&=&file.FileN &&&&&&&&&&&&&&&&&&&&&&&&&&if&(file.FileName.Length&==&0) &&&&&&&&&&&&&{ &&&&&&&&&&&&&&&&&MessageBox.Show(&请选择要导入的文件&,&&提示&,&MessageBoxButtons.OK,&rmation); &&&&&&&&&&&&&&&&&return; &&&&&&&&&&&&&} &&&&&&&&&&&&&&#endregion &&&&&&&&&&&&&&#region&获取Excel的工作表名称 &&&&&&&&&&&&&&&&&&&&&&&&&&Microsoft.Office.Interop.Excel.Application&oExcel&=&new&Microsoft.Office.Interop.Excel.Application(); &&&&&&&&&&&&&object&objMissing&=&System.Reflection.Missing.V &&&&&&&&&&&&&Microsoft.Office.Interop.Excel.Workbook&myBook&=&(Microsoft.Office.Interop.Excel.Workbook)oExcel.Workbooks.Open(file.FileName,&objMissing,&objMissing,&objMissing,&objMissing,&objMissing,&objMissing,&objMissing,&objMissing,&objMissing,&objMissing,&objMissing,&objMissing,&objMissing,&objMissing); &&&&&&&&&&&&&Microsoft.Office.Interop.Excel.Sheets&sheets&=&myBook.W &&&&&&&&&&&&&Microsoft.Office.Interop.Excel.Worksheet&worksheet&=&(Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1); &&&&&&&&&&&&&worksheetname&=&worksheet.N&&&&&&&&&&&&&oExcel.Quit(); &&&&&&&&&&&&&#endregion& &&&&&&&&&&&&&&dataTable.Rows.Clear(); &&&&&&&&&&&&&&&&&&&&&&&&&&DataTable&table&=&LoadExcelToDataTable(file.FileName,&worksheetname); &&&&&&&&&&&&& &&&&&&&&&} &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&public&static&DataTable&LoadExcelToDataTable(string&filename,&string&worksheetname) &&&&&&&&{& &&&&&&&&&&&&DataTable& &&&&&&&&&&&&&&&&&&&&&&&&String&sConnectionString&=&&Provider=Microsoft.Jet.OLEDB.4.0;&&+&&Data&Source=&&+&filename&+&&;&&+&&Extended&Properties=\&Excel&8.0;HDR=YIMEX=1\&&; &&&&&&&&&&&&OleDbConnection&myConn&=&new&OleDbConnection(sConnectionString); &&&&&&&&&&&&string&strCom&=&&&SELECT&*&FROM&[&&+&worksheetname&+&&$]&; &&&&&&&&&&&&myConn.Open(); &&&&&&&&&&&&OleDbDataAdapter&myCommand&=&new&OleDbDataAdapter(strCom,&myConn); &&&&&&&&&&&&table&=&new&DataTable(); &&&&&&&&&&&&myCommand.Fill(table); &&&&&&&&&&&&myConn.Close(); &&&&&&&&&&&&return& &&&&&&&&}&
4.注意:有的人的连接字符串写成这样:
&&&&&&&&&&&&&String&sConnectionString&=&&Provider=Microsoft.Jet.OLEDB.4.0;&&+&&Data&Source=&&+& &&filename&+&&;&&+&&Extended&Properties=Excel&8.0;&;&
这样也可以读取到数据,但是,如果Excel表里的某一列中既有文本类型的值,又有数字类型的值,即混合类型的列,那么就会只读取到一种类型的值,另一种类型的就会为NULL。
&&&&&&&&&&&&&String&sConnectionString&=&&Provider=Microsoft.Jet.OLEDB.4.0;&&+&&Data&Source=&&+&filename&+&&;&&+&&Extended&Properties=\&Excel&8.0;HDR=YIMEX=1\&&;&
这样,后边加上&HDR=YIMEX=1&,并且这句必须用引号引住,这样就会把混合类型的数据同一当作文本读取,不会出现丢数据的现象。
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 java 获取内存数据 的文章

 

随机推荐