有没有办法从我的Windows OpenGL应用程序检测是否正在使用调试器(如gDEBugger)来捕获OpenGL调用?如果找到调试器,我希望能够检测到并终止我的应用程序,以避免破坏着色器代码和纹理.该应用程序是在C++ Builder 6中开发的.
即使你可以找到一种方法来做到这一点,这也是徒劳的尝试,因为可以通过glGetShaderSource()随时简单地调用来询问着色器源.
外部进程可以使用一个线程将一个线程注入到您的进程中CreateRemoteThread(),然后将结果复制回来ReadProcessMemory().使用microsoft 的detours库可以使这个过程非常简单(只需几行).
或者,如果创建远程线程太麻烦,可以使用像Ollydgb这样的反汇编程序将一段代码注入到正常执行路径中,该路径只是在调用之前将着色器代码保存到文件中.
最后,在激活之前,着色器的文本需要位于可执行文件的某个位置,并且可以通过使用IDAPro等工具对可执行文件进行静态检查来提取它.如果加密或压缩它或其他任何东西都没关系,如果它在某个时刻存在并且程序可以提取它,那么就可以确定足够的裂缝.你永远不会赢.
| 归档时间: |
|
| 查看次数: |
431 次 |
| 最近记录: |