原理嘛
先取得目标的内存最大值。比如187M
然后建立187*1024个bety的数组
然后把每个字节。从400000开始
for i:=1 to 187*1024
do
mem[ i ]:=dumem(&40000+i)
end;
这样就把内存镜像下来了
然后做加减重复查询的就是再建立个另外一个数组
for i:=1 to 187*1024
do
mem1[ i ]:=dumem(&40000+i)
end;
然后做比较。比如没有改变的查询
先清除得数数组jieguo[ i ]
for i:=1 to 187*1024
do
if mem1[ i ]:=mem[ i ] then jieguo[ i ]=mem1[ i ]
end;
得到的结果就是
400000+i就是结果的内存地址
jieguo[ i ]就是当前内存的值
当然这只是我的感觉啊。按这样做肯定也能做到。只是时间和效率上未必比人家做的好
而代码查找。 比如find out who change this mem
这样的代码就不知道怎么弄了。可能是把固定段的内存地址复制出来然后编译成汇编。再根据汇编得到指令段。再根据指令段来源。等等等。