这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。
9 @, V5 I4 D0 H* D% Z2 g2 z, ~; `. H5 r' R; G
懂的参考修改完善出工具吧
' O% d+ l% ]2 c4 r2 @ N# H
3 s5 e$ |- y6 X: n2 B' u* z' h
: m: `: P/ L& g1 [8 {; o' v. e
+ Y s: \5 s. {5 A- a, w. d#include<stdio.h>
7 z% O5 z$ i$ |, O#include<windows.h>
1 m# L1 b P. c; `main(), v3 C7 `- r; B' v
{, O& f3 }9 L4 s* }) U7 x6 e
FILE *fp,*fp2;
5 o: `8 }( f! | z7 n1 |9 I/ Wint i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置
4 {$ _9 S& k: a9 P8 A' ?byte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer2 v- l9 U8 P! P3 Q0 U* C( f
//和buffer3
. C; S3 A$ k; `0 L! q1 ~ //一组,buffer指针会变动,buffer制作永远指向
: q/ G7 O$ s9 `+ L! f //buffer的第一个字节位置,buffer2和buffer3同样道
/ T, g, W1 v- F4 x //理/ S. m' [) y! K7 c( ^0 b
buffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置5 P% S0 \% \1 o* h
buffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置, `# a3 @8 S. w
fp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件
n" Z7 E8 s$ @# Ibuffer3=buffer2; //buffer3保存buffer2初始时的地址
& P5 u7 R* j. v9 r7 xfor (i=0;i<=255;i++)
1 m1 u" |3 H, n" O/ I% U{( ]8 _+ l# M9 A% B4 |
buffer1=buffer; //buffer1保存buffer初始时的地址
2 Q' S$ W7 V7 m1 t/ o0 f. C$ `5 N) Ufseek(fp, 0, 0); //重定位到animation.cfg文件的开头
# z. m' V- A. T. n# s0 r- i" z( efread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer6 ^3 K2 B3 F( W. i1 b" i" k
for(j=0;j<16;j++). Z1 @& b4 D: {; }# F2 t
{
1 b. Z& c5 R3 ~7 g1 j; K2 |# [*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
; ~7 W' Q, d }. e9 ?1 H5 x //任一个数值异或,结果保存在buffer1所指的位置上6 r) M& O) K" k# r/ s" m
*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置
+ q8 Z1 w8 [" m7 P, J# U. Wbuffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据4 A. o8 r* q& |. b) B( Z
buffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据) n# o" V6 ^6 Z; p
}, a* x9 Q8 x& `0 ?5 i
}9 |6 T+ x3 w3 i4 {
fp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入1 a ~' a$ S H4 E" Z
fwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将: {) B% e" z3 m. K: M
//buffer2初始时的地址所指的数据,用二进制方式写入
: B4 I4 ?. [ n5 o! e5 d0 T0 e //16×256字节2 K6 O! R' m- H# K
fclose(fp2); //关闭文件句柄
3 N' W$ z0 Q1 d' e- P/ ofclose(fp);$ x3 |0 h: M9 O& [, K, k8 @
8 e( V, t' F* x, R$ y/ Y2 G! Y8 ?$ ^' ^}1 |' D, ?7 p4 O; {/ p$ V( A) m8 z
; X2 t* \1 z9 ?1 H8 h6 Z3 F# Z# v. [
http://book.51cto.com/art/200903/112751.htm |