自己写了一个时钟程序,用来模拟时间类型软件的破解,先从基础的运行时间开始,程序运行界面如图:十秒后程序自动退出
破解思路:查看程序导入表函数(有N多个程序可以查看,以PETOOLS为例),如图所示:
只找到一个和时间有关的函数GetSystemTimeAsFileTime。我们可以通过od自带的api断点,去断下GetSystemTimeAsFileTime这个函数,
Enter进入,在系统领空下段,运行程序,会断在这个函数的系统领空,之后ctrl+F9执行到返回到,call GetSystemTimeAsFileTime的调用,再ctrl+F9执行到返回,来到如下关键代码处:
可见通过上面call函数clock的调用,返回值去和10比较,来判断程序运行的时间,修改跳转或者修改A的值即可实现破解。
破解之后运行如图所示:
程序源代码:
#include<stdio.h>
#include<time.h>
#include <windows.h>
#include<stdlib.h>
void run_time(void);
int main(void)
{
int sum=0;
printf("³ÌÐò»¹¿ÉÒÔÓÃÕâô¶àÃë:");
while(1)
{
sum=sum+1;
if(sum>11)
{
printf("¹§Ï²ÄãÍ»ÆÆÁËÏÞÖÆ\n");
Sleep(3000);
break;
}
run_time();
Sleep(1000);
}
return 0;
}
void run_time(void)
{
int i;
i=clock()/1000;
if(i==10)
{
exit(0);
}
printf("%u ",10-i);
}

1901

被折叠的 条评论
为什么被折叠?



