这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。
4 a) r1 u. ~% t/ N# F3 q, P# `" b1 h0 B
懂的参考修改完善出工具吧
* H D3 D' u: `2 A% V0 Y9 u+ d* ]* Z9 D- z
3 X, K$ C2 O& @: W# t8 e6 E2 [& z& M4 v% T& S
#include<stdio.h>. g; w( P0 `9 I( Y6 q4 c
#include<windows.h>* W2 i& ]+ U9 g
main()
; j4 e% p* a+ F! B: L2 M{
) z) d" A3 e( N8 c, C% d( T* U( MFILE *fp,*fp2;" S% X$ P3 w1 ^, x$ ]
int i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置
% s# |9 I4 T) f" ^7 a* |byte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer24 H) B/ H2 [" a7 \9 @* ?
//和buffer37 U4 {, I+ n8 D5 w8 ^4 Z
//一组,buffer指针会变动,buffer制作永远指向' j2 A+ S. f D4 d' k1 b/ o9 Q4 p
//buffer的第一个字节位置,buffer2和buffer3同样道) {. x- a. G2 d* T! G
//理
6 v8 x0 u% r1 c" Lbuffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置- [( ~ m* U- P2 q2 B9 r8 ^
buffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置
( L5 `0 O# r3 M( ?. ^# Gfp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件
! i: o3 \; S& u8 Q- Abuffer3=buffer2; //buffer3保存buffer2初始时的地址+ R9 {+ R4 [; }+ \1 H# F
for (i=0;i<=255;i++)
5 U9 k1 m9 t& T* F+ r& S{7 H; w0 U. Z4 |" X+ P6 U4 {
buffer1=buffer; //buffer1保存buffer初始时的地址' S, N& n3 d" T& t0 e5 w( E2 {+ ?
fseek(fp, 0, 0); //重定位到animation.cfg文件的开头
0 ^2 J- \7 q1 k: d4 I" W) Mfread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer& F3 ]" T) V5 L/ l
for(j=0;j<16;j++)
2 I; x1 P" L y; q7 p{
7 Q9 q, u' B! j' D*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
3 m" t9 r8 W+ y4 M3 I; v) o9 _2 X //任一个数值异或,结果保存在buffer1所指的位置上7 p4 b4 c) [& L. S4 S* w9 x' \; t1 I
*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置& K7 u0 K; |7 |0 e) s
buffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据* ?0 \# s: M% s9 t4 U; S
buffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据
* \$ w+ c' X8 { i2 ~}
. H [+ r' d: a. U}7 Z1 s. F P, [ o5 B: z) F. M
fp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入. `" F2 t( [- m- Z4 M" C- V" _
fwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将
5 K: C4 J- R0 x9 E! K" J8 P //buffer2初始时的地址所指的数据,用二进制方式写入
1 j, k5 Y- D. J1 L //16×256字节
8 u* l: c. W4 Y8 ^; }4 {fclose(fp2); //关闭文件句柄4 h4 k+ n I7 C3 `0 X( B3 V
fclose(fp);
E1 j5 y; g4 Z: ?% k3 B$ H, H- Z* _
X+ d9 Z1 o7 Y5 j' X3 @}. R8 Y) Y" N9 k6 p8 A0 ]9 _7 j
# b( P. u( [( G
! M4 W: j4 B) i- |! o# E1 N" _http://book.51cto.com/art/200903/112751.htm |