You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
643 B
C
32 lines
643 B
C
3 years ago
|
#include <stdio.h>
|
||
|
#include <string.h>
|
||
|
#include <unistd.h>
|
||
|
#include <stdint.h>
|
||
|
#define SIZE (1024*1024)
|
||
|
|
||
|
int main() {
|
||
|
FILE *in = fopen("source", "r");
|
||
|
FILE *out = fopen("cracked", "wb");
|
||
|
char buffer[SIZE];
|
||
|
size_t bytes;
|
||
|
|
||
|
while (0 < (bytes = fread(buffer, 1, sizeof(buffer), in)))
|
||
|
fwrite(buffer, 1, bytes, out);
|
||
|
|
||
|
|
||
|
/* 0xe1feff54 */
|
||
|
unsigned int pattern = 0x54fffee1;
|
||
|
/* 0x1f2003d5 */
|
||
|
unsigned int new = 0xd503201f;
|
||
|
char buf[4];
|
||
|
fseek(out, 0x520, SEEK_SET);
|
||
|
while (0 < (bytes = fread(buf, 1, sizeof(buf), out)))
|
||
|
if (*(unsigned int *)buf == pattern)
|
||
|
break;
|
||
|
fwrite(&new, 4, 1, out);
|
||
|
|
||
|
fclose(in);
|
||
|
fclose(out);
|
||
|
return 0;
|
||
|
}
|