LOADING

加载过慢请开启缓存 浏览器默认开启

常见反调试的初步学习

SMC

动态保护。

去除时断点在解密后,然后按P,再按C,再按P即可。


IsDebuggerPresent()

此函数允许应用程序确定是否正在调试它,以便它可以修改其行为。

如果当前进程在调试器的上下文中运行,则返回值为非零。

如果当前进程未在调试器的上下文中运行,则返回值为零。


TracerPid

参考文章

linux下 /proc/PID/status 文件包含了执行程序的一些信息,包括TracerPid,也就是调试程序进程的pid。程序也就可以通过检测这个pid来判断当前程序是否被调试跟踪。

实现方式也很简单,写一个读文件的代码按行读取status,如果读取到TracerPid,就判断后面的数是不是0即可。

我们可以通过path的方式修改源程序逻辑,还可以通过修改修改内核的方式,修改TracerPid的获取逻辑来绕过检测。或者通过类似frida-Gadget的方式不通过进程来监控程序,而是直接把监控程序作为程序的一部分,就像加载一个动态链接库一样,而不是加载一个进程。