如何使内存中的值锁定 已知内存基值加偏移.现在我可以读.可以写..但是我想要锁定住内存中的这个值..不让他减少..怎么做.当然可以只增不减也更好用什么函数好.有实例最好 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个有点复杂了,3种解决方法1.调试模式打开进程或者附加调试,然后VirtualProtectEx(hProcess,MemAdr ,.. , PAGE_NOACCESS) PAGE_EXECUTE_READ(允许读就用这个参数)然后从调试函数中获取异常,分析异常处的代码是否是读写MemAdr,如果是进行相应的处理(跳过或者干点别的)以上是CE的模式,缺点很明显,目标程序可以用任意检查调试器的方式检查到程序是否被调试,如果检查到了,对方可以干很多事情,所以CE对很多Exe无效.2.这是我的方法首先远程InLineHook , ntdll.KiUserExceptionDispatcher住这个API,HOOK代码里判断Exp:PExceptionRecord;Exp.ExceptionCode = $C0000005; //内存违例访问异常代码并且Exp.ExceptionInformation[0] = 00000000 //0读错误,1写错误,判断Exp.ExceptionInformation[1] 在MemAdr所在的页面范围内,页面大小通常是4096然后分析异常处的语句是否是在操作MemAdr(有可能操作页面内的其他地址),如果是进入处理流程(跳过或者干点别的什么)然后远程VirtualProtectEx(hProcess,MemAdr,...,NOACCESS);让内存无法访问,如果访问该页面,就会进入Hook流程中,就可以找到访问该地址的语句.缺点:1.跨页地址处理比较麻烦,2.如果允许这个异常语句执行,就得首先暂停其他线程,然后用VirtualProtect恢复,并在当前语句下一句设置UD2异常,然后继续,并在Hook中判断UD2异常,代码C000001D,恢复线程恢复UD2继续,当然也可以用int 3,为了很好的区分,建议用UD23.硬件断点,需要在r0下修改调试寄存器,然后用上面任意一种方法拦截异常并分析. 以前曾用过FPE、金山游侠就可以。 搜吧里看到的,给我震撼不小,拿来分享 &&&&&&&&&&&&&&关于记录键盘消息&&&&&&&&&&&& 马上结帐 请熟悉VC 和DELPHI的朋友进来看看关于DELPHI调用VCDLL的问题? SQL查询语句怎么写??? 关于xpmenu的问题!!!!!!!!!!!!!!!!! 一个连Delphi5一些控件都有的BUG 注册dll时出错! delphi读写xml文件报错 将一批*.html文件转化为*.txt文件如何处理??谢谢~~~~~~ 请各位高手帮忙,关于DELPHI口令加密的问题。 标签打印 求 大虾 指导啊 关于VB播放器 显示总时间的问题 !!!!!!!!!!!!!!
1.调试模式打开进程或者附加调试,然后VirtualProtectEx(hProcess,MemAdr ,.. , PAGE_NOACCESS) PAGE_EXECUTE_READ(允许读就用这个参数)
然后从调试函数中获取异常,分析异常处的代码是否是读写MemAdr,如果是进行相应的处理(跳过或者干点别的)
以上是CE的模式,缺点很明显,目标程序可以用任意检查调试器的方式检查到程序是否被调试,如果检查到了,对方可以干很多事情,所以CE对很多Exe无效.2.这是我的方法
首先远程InLineHook , ntdll.KiUserExceptionDispatcher住这个API,
HOOK代码里判断Exp:PExceptionRecord;
Exp.ExceptionCode = $C0000005; //内存违例访问异常代码
并且
Exp.ExceptionInformation[0] = 00000000 //0读错误,1写错误,
判断Exp.ExceptionInformation[1] 在MemAdr所在的页面范围内,页面大小通常是4096
然后分析异常处的语句是否是在操作MemAdr(有可能操作页面内的其他地址),如果是进入处理流程(跳过或者干点别的什么)然后远程
VirtualProtectEx(hProcess,MemAdr,...,NOACCESS);
让内存无法访问,如果访问该页面,就会进入Hook流程中,就可以找到访问该地址的语句.缺点:1.跨页地址处理比较麻烦,2.如果允许这个异常语句执行,就得首先暂停其他线程,然后用VirtualProtect恢复,并在当前语句下一句设置UD2异常,然后继续,并在Hook中判断UD2异常,代码C000001D,恢复线程恢复UD2继续,当然也可以用int 3,为了很好的区分,建议用UD23.硬件断点,需要在r0下修改调试寄存器,然后用上面任意一种方法拦截异常并分析.