|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 soldier 于 2011-4-28 15:50 编辑
之前设计的破解程序的文件地址都是固定的 只要作者一更新主程序 只能重新修改文件地址 所以就想到试试搜索关键性代码 然后修改 这样就能解决这个问题了 下面的程序是搜索到了 关键性代码 但是就是改不了 郁闷的很···
大伙都看看 是怎么回事··· 编译环境是DEV C++
#include <stdio.h>
#include <unistd.h>
#include <windows.h>
int main()
{
system("COLOR 0a");
system("title O(∩_∩)O~~欢迎使用由【遲、钝dè豬】设计的程序");
printf("======================================================================\n");
printf("\n\tU盘杀毒专家-USBKiller V3.1 Build1102 破解程序...\n");
printf("\n======================================================================\n");
printf("\t\t\t\t\t\t遲、钝dè豬 QQ:1007566569\n\n");
MessageBox(0,"\n【注意】:此程序只为技术研究,若喜欢【U盘杀毒专家】请购买正版...\n\n\t 毕竟程序是一句一句代码写出来的,需要花费很多的精力与时间...\n","注意!",MB_OK);
MessageBox(0,"【注意】:本程序需放在该软件目录中,主程序原名【USBKiller.exe】不得更改...","提示",MB_OK);
FILE *fp=NULL;
int data=0;
int i=0,h=0; // 记录 加/解密 字节数
int d;
char rvir[]={0XEB};
if((fp=fopen("已被破解.exe","r"))==NULL)
{
if((fp=fopen("USBKiller.exe","rb+"))==NULL)
{
printf("----------------------------------------------------------------------\n");
printf("无法打开或修改文件...【USBKiller.exe】可能正在运行...正在结束其进程...\n\n");
system("TASKKILL /F /T /im USBKiller.exe");
printf("----------------------------------------------------------------------\n\n");
}
if((fp=fopen("USBKiller.exe","rb+"))!=NULL)
{
system("copy USBKiller.exe 备份文件.exe>>%windir%\\temp\\tmp.tmp");
fseek(fp,0,2); // 将指针指向文件尾端
d=ftell(fp); // 读取文件大小并存入d
fseek(fp,0,0); // 重新指向文件开端
printf("正在搜寻关键代码...\n\n");
for(i=1;i<=d;i++) // 判断文件是否读取完毕 原本是想用变量 i 来记录指针所指向的位置 即文件地址 但现在貌似 错了
{
fread(&data,0x1,1,fp); // 读取每一字节
if(data==0xFF)
{
fread(&data,0x1,1,fp); // 读取每一字节
if(data==0x2C)
{
fread(&data,0x1,1,fp);
if(data==0X01)
{
fread(&data,0x1,1,fp);
if(data==0X72) // 其实应该修改这里的 把72 改 EB 就能破解了 但我的目的不在于破解
{
fread(&data,0x1,1,fp);
if(data==0x0D)
{
fread(&data,0x1,1,fp);
if(data==0x2C) // 修改这里只是演示 由于时间关系 暂时这样设计先
{
fwrite(rvir,0x1,1,fp); // 修改其代码
fclose(fp); // 关闭文件
system("copy USBKiller.exe 已被破解.exe>>%windir%\\temp\\tmp.tmp");
system("copy 备份文件.exe USBKiller.exe>>%windir%\\temp\\tmp.tmp");
unlink("备份文件.exe");
MessageBox(0,"O(∩_∩)O~~~破解成功...准备运行【已被破解.exe】...\n\n【USBKiller.exe】主程序需要保留它以备升级病毒库时供升级组件验证...","~O(∩_∩)O~破解成功~",MB_OK);
spawnl(P_NOWAIT, "已被破解.exe", NULL);
exit(0);
}
}
}
else if(data==0xEB)
{
printf("\n\n----------------------------------------------------------------------\n");
printf("\t【USBKiller.exe】主程序已被破解,不需要再次破解.....");
printf("\n----------------------------------------------------------------------\n\n");
system("pause");
exit(0);
}
else
MessageBox(0,"无法破解该程序...可能作者已经更改其密钥算法或程序被加密!","错误",0);
}
}
}
}
}
else
{
printf("----------------------------------------------------------------------\n");
printf("无法打修改该文件,请检查该程序的文件属性是否为只读?...\n\n");
printf("----------------------------------------------------------------------\n\n");
}
}
else
{
MessageBox(0,"检测到曾经被破解过的程序【已被破解.exe】存在...","提示",MB_OK);
fclose(fp);
}
system("pause");
exit(0);
}
|
|