联想的手机内存一般有多少保护怎么去除

内联汇编如何禁止自动生成内存保护代码?|::::编程乐园:::: - ★广海社区★ - www.ghoffice.com 授人以鱼不如授人以渔 - Powered by phpwind
查看完整版本: [--
内联汇编如何禁止自动生成内存保护代码?
例如: &asm &call addr & &&生成: &// 008A70C0 &/$ 55 push ebp &// 008A70C1 |. 8BEC mov ebp, esp &// 008A70C3 |. 51 push ecx &// 008A70C4 |. C745 FC 50A54&mov dword ptr [ebp-4], 49A550 &// 008A70CB |. FF55 FC call dword ptr [ebp-4] &// 008A70CE |. 59 pop ecx &// 008A70CF |. 5D pop ebp &// 008A70D0 \. C3 retn &&但是我不想要其中的蓝色字体,怎么办?
蓝色代码属于正常的,&可以理解为函数头部,你可以理解为&begin&&end
加函数修饰符,自己查资料&VC里是这样:__declspec(naked)
在C语言调用中默认的函数修饰_cdecl,由主调用函数进行参数压栈并且恢复堆栈。&&&给你找了点资料,你自己看下吧。
楼上的,似乎这个东西跟LZ提到的关系不大,主要是LZ把堆栈保存这东西没弄清楚&还有,LZ你为什么会想到去掉这个代码呢?
呵呵,因为看到C++能做到,所以想知道Delphi是否也可以。&谢谢几位的热情!
学习了 继续汇编中 [s:44]
引用第4楼kuty77于 21:59发表的& :&楼上的,似乎这个东西跟LZ提到的关系不大,主要是LZ把堆栈保存这东西没弄清楚&还有,LZ你为什么会想到去掉这个代码呢?&建议你仔细看看我说的东西,对于一个函数的执行,是有函数执行修饰的,默认是由调用这个函数的函数或方法来处理堆栈平衡,也就是LZ的蓝色部分代码,当强制指定为_declspec(naked)就表示,这个修饰符所在的函数,自己处理堆栈平衡,那么就不会出现LZ蓝色部分代码。
引用第7楼x10-01-14 08:54发表的& :&建议你仔细看看我说的东西,对于一个函数的执行,是有函数执行修饰的,默认是由调用这个函数的函数或方法来处理堆栈平衡,也就是LZ的蓝色部分代码,当强制指定为_declspec(naked)就表示,这个修饰符所在的函数,自己处理堆栈平衡,那么就不会出现LZ蓝色部分代码。&&&调用约定我已经看过了,但对LZ的问题我个人感觉还是用处不大,&主要是我觉得楼主想把代码去掉是一个很没道理的做法,&因为去掉和不去掉都要看游戏设计者安排了什么约定,总觉得楼主在代码设计上理解有错误。&&现在这个不重要了,楼主居然是为了证实delphi能不能做到。。。
其实事情的起因是这样的:&&在写Hook Call的时候,发现Delphi 自动生成的堆栈保护代码修改了一些我想保留的寄存器,导致异常。&如果能够手工控制堆栈的话就不会这么麻烦了。&&因为我是个新手,所以不熟悉,在晚上查了很多资料,发现C++有_declspec,但是不了解Delphi中有没有同样功能的东东,以及如何使用。&后来一直没解决。再后来呢,我干脆不Hook那个Call了,我Hook其他的地方(非call),将异常问题解决了。&&因为之前要Hook的Call有传入参数,堆栈操作本来就很麻烦,Delphi又自作多情,干脆跳过去了。
只要你在函数过程的BEGIN和END里直接加汇编,没有DELPHI的语句,那就没有蓝色的字体了.如果加了DELPHI语句,DELPHI堆栈自动平衡,保护ESP就是应该做的事了.
这个我知道,事实上也是这么做的,用来替代原来call的call我使用完全汇编的方法编写,变量用全局变量,然后自定义的处理过程封装为另一个方法,这样就避免了自动堆栈平衡。&&起初我也认为自动生成的代码不会影响我的代码逻辑,但是后来发现,在过程中声明的变量越多或逻辑代码越多就越是麻烦,用OD跟了之后也没有发现什么规律,所以就干脆拒绝自动堆栈平衡了。完成之后,dll就非常稳定了。
感觉只有直接如下&ASM&END&代替&BEGIN&END&并且不能使用局部变量&
给力啊。CALL也HOOK,要是能放段代码就更好了。呵呵
procedure MyC &asm &&&SUB ESP, $4&&&&// code..... & &&function fun(a1,a2: Cardinal): C &begin &&&asm &&&&&push a2 &&&&&push a1&& &&&&&call MyCall &&& &
强悍,继续学习&&
那是保存环境变量的,不可能去掉
查看完整版本: [--
Powered by
Time 0.088877 second(s),query:3 Gzip enabled关于内存保护问题
[问题点数:100分,结帖人wwwhhb4001]
本版专家分:30
结帖率 100%
CSDN今日推荐
本版专家分:33
本版专家分:37064
2008年 总版技术专家分年内排行榜第一
2009年 总版技术专家分年内排行榜第四
2009年2月 总版技术专家分月排行榜第一2009年1月 总版技术专家分月排行榜第一2008年11月 总版技术专家分月排行榜第一2008年10月 总版技术专家分月排行榜第一2008年9月 总版技术专家分月排行榜第一2008年8月 总版技术专家分月排行榜第一2008年7月 总版技术专家分月排行榜第一2008年6月 总版技术专家分月排行榜第一2008年5月 总版技术专家分月排行榜第一2008年4月 总版技术专家分月排行榜第一
2008年12月 总版技术专家分月排行榜第二2008年3月 总版技术专家分月排行榜第二2008年2月 总版技术专家分月排行榜第二
本版专家分:5207
匿名用户不能发表回复!|
其他相关推荐
Linux与VxWorks的主要区别
3、内存访问和内存保护
VxWorks的内核采用实存储管理方式,所有任务运行于同一物理地址空间,用户程序直接操作物理地址,不能直接地提供内存保护,不能防止错误蔓延。一个模块崩溃,将导致整个系统崩溃。更换组件或者升级只能重启系统。
Linux的内核采用
第四章存储保护单元(MPU)
存储保护模块为非法(非预期的)存取存储映像资源提供必需的基本的保护功能。多地址范围比较器拿置于存储保护单元模块(MPU)里面的八个内存保护描述符与内存存取进行比较,以确定每次存取是否合法。这种比较对总线主控制器的存取和存取的类型很敏感。
存储保护单元模块(MPU)可以用来很容易的被不同的总线主控制器隔离内存范围。也能被操作系统或者软件内核合法的隔离
C++有内存保护吗,真的有:http://en.wikipedia.org/wiki/Buffer_overflow_protection这个只能保护stack上的buffer,不过已经很有作用了。写越界写坏callstack的概率低了很多。提醒:如果callstack没有效信息,更有可能是环境版本不匹配。真正写坏callstack这种事情很罕见的。另外,用ldd命令可以看两台机器的环境是否一致,
这一部分描述在一些stm32微控制器应用的内存保护单元。参看相应的设备手册检查在我们使用的stm32类型中是否存在。
内存保护单元划分内存地图为许多区域,而且定义了每一区域的定位、大小、访问权限和内存属性。它支持:每一区域独立属性设置;重叠区;将内存属性导出到系统。
内存属性影响到区域内存访问的行为。Cortex-M3内存管理单元定义:8个独立的内存区域,0-7;一个背景区...
在代码维护中遇到过这种问题,CPU访问了corePac的外部内存空间0x75510C55地址,即CPU向corePac的L2内存控制器发起了对该内存的访问,然后L2内存控制器将该请求发给corePac的XMC模块,XMC模块根据配置好的寄存器(即32bit虚拟地址到36位物理地址的映射与内存权限寄存器,每个大小为16M的内存段用一个寄存器设置,每个CPU均有同样的多个此种寄存器)检查该地址是否合法
包含头文件#include
关闭内存写保护的代码:
KIRQL WPOFFx64()
KIRQL irql=KeRaiseIrqlToDpcLevel();
UINT64 cr0=__readcr0();
__writecr0(cr0);
_disable();
在很多机器上 SSDT 表是不可写的,写即导致机器无提示崩溃重启。这是需要去除核心内存的写保护: //----------------------------------------------------------------------//// 设置核心内存访问保护////--------------------------------------------------------
关闭内存写保护的代码:
KIRQL WPOFFx64()
KIRQL irql=KeRaiseIrqlToDpcLevel();
UINT64 cr0=__readcr0();
__writecr0(cr0);
_disable();
打开内存写保护的
一、windows下的内存保护机制0x00、二进制漏洞二进制漏洞是可执行文件(PE、ELF文件等)因编码时考虑不周,造成的软件执行了非预期的功能。二进制漏洞早期主要以栈溢出为主。我们都知道在C语言中调用一个函数,在编译后执行的是CALL指令,CALL指令会执行两个操作:(1)、将CALL指令之后下一条指令入栈。
(2)、跳转到函数地址。函数在开始执行时主要工作为保存该函数会修改的寄存器的值和申请局
MMU提供的一个关键服务是,能使各个任务作为独立的程序在其自己的私有存储空间运行.地址转换过程允许运行的多个程序使用相同的虚拟地址,而各自存储在物理存储器的不同位置.
区域可以是活跃的,也可以是睡眠的:活跃区域包含当前系统正在使用的代码或数据;睡眠区域包含当前不使用,但可能在短时间内变为活跃的代码或数据.睡眠区 域是被保护的,因此当前正在运行的任务是不能访问的.MPU和MM如何过vmp的内存保护
如何过vmp的内存保护
学习啦【内存知识】 文辉
  你知道如何过vmp的保护吗?今天就让学习啦小编来教下大家吧,快来看看吧,希望能让大家有所收获!
  工具/原料
  待破解软件一个 &12.vmp.exe&
  OD调试工具
  樱花补丁工具
  随意一个查壳工具
  方法/步骤
  第一步,查壳。
  如下图,PE区段查出壳为VMP
  第二步:载入OD 如果打开 提示 该程序被加密 询问是否尝试分析,点否;
  然后,点小三角让程序跑起来;当看到程序正常运气起来以后接着按alt+E 或者直接点OD 菜单栏上面的E 如图:
  第三步:选择我们要调试的程序 双击 进入程序领空
  第四步:进入程序领空后 你会发现 代码全部是黑不溜秋 乱的 根本看不懂 这个时候 随便选择一条代码 【右击 --&分析--&分析代码】 分析完毕以后 再次 【分析--&从模块中删除分析】
  第五步:1.右键 --&中文搜索引擎--&智能搜索 (对应本步骤第一张图)
  2.搜索完毕 自动跳转到 中文搜索引擎窗口(对应对应本步骤第二张图)
  3.双击 破解 跳转到 汇编窗口(对应对应本步骤第三张图)
  4.选择JE 那行代码 右键 --&汇编 把JE 改成JNE 改完点汇编 然后点取消 (..... JE 是相等就跳转 JNE是不相等就跳转 .....)
  5.修改完毕 代码 变成这样: .........红色的就代表是被修改过的哈
  6.接着 回到我们的程序 随便输入什么 东西 都提示 破解成功了!
  加壳的状态下面破解的话 不能 应用修改到 程序 然后把程序复制出去 那么只有打补丁的形式因为在这个程序 运行的时候 一辈子不会变 都在我们的内存里面所以我们在 电脑的内存里面动手脚找到内存地址然后修改 刚才的JE 为JNE 以下为记录程序原本需要我们修改的地址 和汇编代码源程序为:004010FD /0F84
je 0040113C地址:004010FD代码:0F破解后代码:004010FD /75 3D jnz short 010FF 90 nop nop nop nop地址:004010FD代码:753D
  最后一步:打开樱花补丁工具;
  完事儿以后 运行生成的补丁就搞定了
[如何过vmp的内存保护]相关的文章
【内存知识】图文推荐联想一体打印机机内存安全保护密码是多少?_百度知道
联想一体打印机机内存安全保护密码是多少?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
热心网友知道合伙人
1、如果联想台式机打开打印机就报打印机内存已满的报错,说明打印机内存过小,需要更换打印机内存,最好添加一个打印机内存。2、一般打印机会预留打印机内存插槽,专门供添加内存的地方,可以到打印机经销商提出购买专用打印机内存来添加。更换打印机内存需要拆开改板,找到电路板,就可以看到预留的内存插槽,插入扣紧即可。3、同时也需要增加电脑的虚拟内存,方法是:选择计算机右键属性,高级系统设置,性能,设置,高级,更改虚拟内存为物理内存的2倍。这样也能避免出现内存已满的报错。
morehaslove知道合伙人
morehaslove
采纳数:39
获赞数:38
用户名admin,密码access.
1条折叠回答
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。内存保护是否可完全由软件实现?为什么?
[问题点数:40分]
本版专家分:0
CSDN今日推荐
匿名用户不能发表回复!|
其他相关推荐

我要回帖

更多关于 联想电脑报价 的文章

 

随机推荐