这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。5 a6 S: P. q- C5 ?3 o0 J
3 J$ r) @( v2 H# F懂的参考修改完善出工具吧+ s9 a" f, W4 K- A3 ^& j' z
" a; G( }. k6 J# _/ H
% A7 ?* D6 K" A$ Y- M* j$ |1 I+ I+ t+ c p+ F
#include<stdio.h>
, k& j! L3 Y2 W( h ^! j' u#include<windows.h>
+ J% w8 ^( G6 Q0 Hmain()4 b2 X7 M- N' L' h8 r! J7 Y# k
{) H6 T: Q9 X! O
FILE *fp,*fp2;
" O" J& _( E- G5 d! ?int i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置
) {# ~. }0 E8 j$ L2 k1 }& P' o5 `& lbyte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer2% i, F1 R0 l S+ G0 o
//和buffer3
' ^; H. m* X9 i+ e+ P3 T //一组,buffer指针会变动,buffer制作永远指向$ u& e7 @+ [) p: ^7 F X- @
//buffer的第一个字节位置,buffer2和buffer3同样道: m ^/ S- r3 R; c1 u& ?
//理
; e4 j6 D3 a% [) z$ ibuffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置; h* h5 g$ H0 K
buffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置! K, l: s# _, @' V- i
fp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件
3 R8 V. C) K2 O) |9 b/ H6 |buffer3=buffer2; //buffer3保存buffer2初始时的地址
a& X: _0 M' ^# E' p, P B4 w6 k% |for (i=0;i<=255;i++): a9 `* K- n" D& B- H; ]+ J
{4 r' i5 r w7 V" a7 f) {) I1 [
buffer1=buffer; //buffer1保存buffer初始时的地址
! C" g/ u. h0 `" G0 Wfseek(fp, 0, 0); //重定位到animation.cfg文件的开头$ n' A+ L8 k( i, R' J$ i! Q* W
fread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer
4 ~( e+ u" g4 z' p! ffor(j=0;j<16;j++)$ | S" z( O+ ]+ f7 U, n8 D5 J
{6 C% S7 k1 K, O: H# Z5 H" F
*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间3 J _* N7 I3 l- c: c# @
//任一个数值异或,结果保存在buffer1所指的位置上
/ p7 V& A# J$ r*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置0 Q0 V1 \; Q. }/ L" t
buffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据# z9 R$ _$ N8 ^
buffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据; ~* W4 c* N6 u k
}# ^: H. y- w, Z! E
}
: K: K( v6 W* X4 g- I3 l# Efp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入
, \' i5 `" l8 k! Rfwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将3 m3 |" B$ A& s: t3 {
//buffer2初始时的地址所指的数据,用二进制方式写入! k. k! [. u: W0 `/ H8 ~% c
//16×256字节
3 F' I7 |9 v/ T8 M6 m, [fclose(fp2); //关闭文件句柄
$ s$ | m8 Q. O$ g' H, M8 O# }6 B+ Hfclose(fp);
# I& @+ r4 I( a
* K9 u2 Y" r# }0 w) g}
& X/ ]' ?& M8 `' E6 p2 R9 u1 }" A8 t5 v' _
/ `7 y5 s" q t: H1 vhttp://book.51cto.com/art/200903/112751.htm |