第一贴地址:
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
========================================================================

解决方案 »

  1.   

    .。空间竟然够大郁闷重新帖DR6-7
    ===============================================================================    '       | - - - - - - - - - - - - - - - - | - - - - - - - - - - - - - - - - |
        ' 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
        '========================================
      

  2.   

    lz做游戏修改器这么强vb版估计无解了。。也许google搜索英文资料可以找到
      

  3.   

    不是无解,已经写的差不多了,正在调试。有些结构和API声明在VB.NET里面用的时候经常出问题,所以需要大量的修改,没办法,所以进度比较慢。。
      

  4.   

    问问版主们吧毕竟是MVP,经验及技术方面都远在我们之上
      

  5.   

    呵呵。这个问题做过的肯定是不多的,有一个问题就是如果用VB6去做,调试循环是不太好解决的,.NET下我用的是多线程。由于上面这个原因,估计版主们如果用VB6也会觉得麻烦。不过这个VB6使用多线程的解决方案是很多的,但是编码都比较麻烦,最好的解决方案个人认为是写2个程序,一个用于调试一个用于主程序,避免多线程,启动时传递COMMADN,而后用进程通讯来传递其他参数及结果。实际上这个问题,我已经做完了。不知道什么原因,我写用DRX寄存器的代码总是不能成功返回,后来又采用了一个更加高效并且易于处理的方式来解决,具有更多的跟踪功能,可跟踪读、写、读写,较完整的实现的内存断点。
    帖子过几天我把代码修正一下测试完成再结
      

  6.   

    代码测试通过了。还有几个问题,解决以后我这个工程基本就收尾了。有懂的朋友跟一下帖,另开帖提出其中能解决的问题。
    1、如何在其他程序运行全屏DX模式下显示出自己的窗体GDI(GDI+)
    2、如何将内存数据与汇编代码互相转换,就是机器码和汇编代码的互化