这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。# Q6 s, G) o1 k. p9 n$ K, S7 e
) g* s. N$ q" n4 \+ u8 ]# q1 n' Q懂的参考修改完善出工具吧
8 j& I1 \7 E& }7 `. x' E" k) w5 U/ R6 W4 O, m5 }; _
3 x/ W$ f' I4 Q4 G" H0 V% a% A
& W% }& ?: H! O#include<stdio.h>
# ~6 [& g( [* N6 _#include<windows.h>/ s9 @4 r* P1 q! b1 l* o* n
main()
4 V. n: {, i, p0 e+ P" y) H{
( `4 \1 e/ | E) I, _ X! w' bFILE *fp,*fp2;' x# h: @9 Z$ E! S+ k2 B; b! I
int i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置
+ F% ]9 ~ _% R- I, Gbyte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer23 Z1 k% B. @, M) Y; @0 s
//和buffer3
- }- T/ E2 g2 @ //一组,buffer指针会变动,buffer制作永远指向" ?; ]2 G1 P- Y' U" U( R
//buffer的第一个字节位置,buffer2和buffer3同样道; Y+ _& k4 p- ]$ Z" V& ]
//理
: t) O4 c, a$ `' g6 o0 rbuffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置
3 a/ P% Q% ^, I' q obuffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置
* R4 B7 h: o. z- t$ nfp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件2 Z9 u( |& U C! a7 W" D
buffer3=buffer2; //buffer3保存buffer2初始时的地址6 I* G4 Q7 ^3 i+ j: P! r5 e
for (i=0;i<=255;i++)% u% n7 `' |4 j
{ _' S0 M/ G7 c& q* j; A
buffer1=buffer; //buffer1保存buffer初始时的地址+ k1 R/ x/ O0 Z; o
fseek(fp, 0, 0); //重定位到animation.cfg文件的开头
2 h7 p0 V, i, W5 @fread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer
7 M2 Q7 ~0 T7 Y4 F9 L8 qfor(j=0;j<16;j++)
; [7 X. J2 g8 B% K: i. l{
( V! s1 {8 T, p: N- p0 m: @*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
2 u$ ?0 G1 _- h( }: B9 _. r6 F //任一个数值异或,结果保存在buffer1所指的位置上
9 Y" _2 R8 S5 j4 B, D7 J$ B*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置
. ] R5 c: @# j5 F. y: Kbuffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据
% t0 I# n" r* u- _0 j" P5 @buffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据
1 K% p4 w6 M7 I1 p( T}
+ b- }) @* B7 j$ s}
1 N/ B5 m6 P9 M ?# Yfp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入
8 Z( P$ x+ @! O6 |fwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将
) ?1 ^# O) F5 O2 z2 C //buffer2初始时的地址所指的数据,用二进制方式写入
" P. [1 D! C2 M2 V3 {3 i/ U //16×256字节& p, X7 L! o" l
fclose(fp2); //关闭文件句柄% I+ c* I: z s: @& E8 a
fclose(fp);* W. t+ p& _5 ]* ~3 }
: V" }8 G& s2 m S; k( }# [% B
}0 S' F8 F$ v' `! _. D6 U
, T/ h0 F! t6 s2 i4 B) `$ w' s3 S3 |6 N# ~' E% O
http://book.51cto.com/art/200903/112751.htm |