我的主要要求是对提到的反调试检查程序进行两次分析(一次在存在调试器的情况下,另一个在没有调试器的情况下)以收集一些信息以在运行时进行分析(假设只有二进制文件可用)
#include <stdio.h>
#include <sys/ptrace.h>
int i_am_debugged()
{
if (ptrace(PTRACE_TRACEME, 0, 1, 0) < 0)
{
printf("Avoid debugging please");
return 1;
}
return 0;
}
int main()
{
if(i_am_debugged())
{
return 1;
}
printf("It's going well ! No debugging !\n");
return 0;
}
目前,我为此编写了一个英特尔 PIN 工具,但由于 PIN 的工作方式并且总是执行“一切顺利!没有调试!'。
所以,我的问题:
我可以做些什么(附加调试器并运行 pin 工具或其他东西)来使用我的 PIN 工具分析两种类型的运行,或者在这种情况下任何其他类型的分析(例如二进制翻译等)对我有帮助吗?
我想收集有关指令的特定信息,而不仅仅是调用图等,因此想要一些类似于 PIN 的 C++ 程序员接口的功能。
一个详细的答案会很棒,谢谢。