第一贴地址:
http://community.csdn.net/Expert/topic/5614/5614188.xml?temp=.6287348
问题解决方向:
使用调试器,获取调试事件,在调试事件中使用DRX寄存器获取修改数据的汇编语句地址
解决程度:
使用调试器部分:主线程做窗体,另一个线程加载调试器,调试器可正常获取调试事件并处理,可随时终止调试。已经不会造成目标进程,本进程死锁,解决了内存冲突和回收问题。
剩余问题:
DRX寄存器的使用,若我想得到写入06F969A4地址数据的汇编代码地址,应如何做,要代码啊,呵呵,别来理论的,来实际的!
=====================================================================
以下的全部代码(包括声明)都是.NET形式的
=====================================================================
CONTEXT声明的前段:
Public Structure CONTEXT
Dim ContextFlags As Integer '0x00000000
Dim Dr0 As Integer '0x00000004 Context Debug Registers
Dim Dr1 As Integer '0x00000008 Context Debug Registers
Dim Dr2 As Integer '0x0000000C Context Debug Registers
Dim Dr3 As Integer '0x00000010 Context Debug Registers
Dim Dr6 As Integer '0x00000014 Context Debug Registers
Dim Dr7 As Integer '0x00000018 Context Debug Registers
Dim FloatSave As FLOATING_SAVE_AREA 'Context Floating Point
………………
End Structure
=======================================================================
下面这段是DR6\DR7的格式,将各位置位时请使用2^X形式,例如将DR7的L0和G0置位,请写DR7 = 2^0 + 2^1空间所限,把22位到27位删去了,其他位一一对应
' | - - - - - - - - - - | - - - - - - - - - - - - - - - - |
' Dr6 | | B B B B B B B |
' | | T S D 3 2 1 0 |
' | - - - - - - - - - - | - - - - - - - - - - - - - - - - |
' Dr7 | RWE|LEN|RWE|RWE|LEN | G L G L G L G L G L G L G L G L |
' | 3 3 1 0 0 | T T D D S S E E 3 3 2 2 1 1 0 0 |
' | - - - - - - - - - - | - - - - - - - - - - - - - - - - |
' 31 2821 16 0
========================================================================
http://community.csdn.net/Expert/topic/5614/5614188.xml?temp=.6287348
问题解决方向:
使用调试器,获取调试事件,在调试事件中使用DRX寄存器获取修改数据的汇编语句地址
解决程度:
使用调试器部分:主线程做窗体,另一个线程加载调试器,调试器可正常获取调试事件并处理,可随时终止调试。已经不会造成目标进程,本进程死锁,解决了内存冲突和回收问题。
剩余问题:
DRX寄存器的使用,若我想得到写入06F969A4地址数据的汇编代码地址,应如何做,要代码啊,呵呵,别来理论的,来实际的!
=====================================================================
以下的全部代码(包括声明)都是.NET形式的
=====================================================================
CONTEXT声明的前段:
Public Structure CONTEXT
Dim ContextFlags As Integer '0x00000000
Dim Dr0 As Integer '0x00000004 Context Debug Registers
Dim Dr1 As Integer '0x00000008 Context Debug Registers
Dim Dr2 As Integer '0x0000000C Context Debug Registers
Dim Dr3 As Integer '0x00000010 Context Debug Registers
Dim Dr6 As Integer '0x00000014 Context Debug Registers
Dim Dr7 As Integer '0x00000018 Context Debug Registers
Dim FloatSave As FLOATING_SAVE_AREA 'Context Floating Point
………………
End Structure
=======================================================================
下面这段是DR6\DR7的格式,将各位置位时请使用2^X形式,例如将DR7的L0和G0置位,请写DR7 = 2^0 + 2^1空间所限,把22位到27位删去了,其他位一一对应
' | - - - - - - - - - - | - - - - - - - - - - - - - - - - |
' Dr6 | | B B B B B B B |
' | | T S D 3 2 1 0 |
' | - - - - - - - - - - | - - - - - - - - - - - - - - - - |
' Dr7 | RWE|LEN|RWE|RWE|LEN | G L G L G L G L G L G L G L G L |
' | 3 3 1 0 0 | T T D D S S E E 3 3 2 2 1 1 0 0 |
' | - - - - - - - - - - | - - - - - - - - - - - - - - - - |
' 31 2821 16 0
========================================================================
=============================================================================== ' | - - - - - - - - - - - - - - - - | - - - - - - - - - - - - - - - - |
' Dr6 | | B B B B B B B |
' | | T S D 3 2 1 0 |
' | - - - - - - - - - - - - - - - - | - - - - - - - - - - - - - - - - |
' Dr7 | RWE|LEN|RWE|LEN|RWE|LEN|RWE|LEN | G L G L G L G L G L G L G L G L |
' | 3 3 2 2 1 1 0 0 | T T D D S S E E 3 3 2 2 1 1 0 0 |
' | - - - - - - - - - - - - - - - - | - - - - - - - - - - - - - - - - |
' 31 16 0
'========================================
帖子过几天我把代码修正一下测试完成再结
1、如何在其他程序运行全屏DX模式下显示出自己的窗体GDI(GDI+)
2、如何将内存数据与汇编代码互相转换,就是机器码和汇编代码的互化