返回首页

如何找到一个变量的内存(文件句柄)地址:在试图重新与一个不同的购股权的文件,我已经注入到进程中的DLL,并尝试写一个特定的内存地址,我还以为是被存放在文件钩地址...但它结束了崩溃的应用程序。

我一直在使用TSearch来看看手柄在4个字节的数值表示,本来我已经找到了7内存地址的文件句柄,我能找到被拦截的CreateFile改变。我试图创造一个新的文件句柄使用ReOpenFile,覆盖新的文件句柄的内存地址,但造成应用程序崩溃,但应用程序崩溃后,我再也找不到一个内存地址,始终显示的文件句柄

这是我用的方法覆盖旧的手柄....但即使它是正确的,我可以找到覆盖......

IntPtr[] memAddr = { new IntPtr(0x18971C), new IntPtr(0x617B9AAC), new IntPtr(0x645106DC), new IntPtr(0x660CC0EC), new IntPtr(0x6F861728), new IntPtr(0x74E300BC), new IntPtr(0x7500011C) };

foreach (IntPtr iter in memAddr)

{

    IntPtr iinn = Marshal.ReadIntPtr(iter, Marshal.SizeOf(typeof(IntPtr)));

    IntPtr outt = ReOpenFile(iinn, 0x00000001, 0x00000001, 0x00000000);

    Marshal.WriteIntPtr(iter, Marshal.SizeOf(typeof(IntPtr)), outt);

}

Queue.Push(memAddr.Length + " memory addresses patched!");

回答