这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。, W, [9 f5 V- w3 s! n
; U2 }- E( W- \( o2 S5 _! n懂的参考修改完善出工具吧
0 Y, c2 |7 z6 V( a) o1 `' w- Z
3 n, z' p' Q0 F+ ]2 T3 M1 O6 v6 ~3 O
9 a1 o4 M+ J8 X! ?3 m: m3 b
#include<stdio.h>9 E; v9 ?0 N( `
#include<windows.h># L- k1 R7 e" {9 O6 {& m6 l) X' l% X
main()4 F; Y5 J% A) P! f$ B2 D# b! W
{
8 `& m8 Y1 h9 q8 L% D& [FILE *fp,*fp2;
: B8 E3 o: s* R% U( Nint i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置# H' u. z9 J: k# @7 o
byte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer2. X, t% F4 w! W' A
//和buffer3
6 F( }# E% r' f0 ^, z# ~# v4 R //一组,buffer指针会变动,buffer制作永远指向
8 r( \$ ^: P3 G+ T T. d- n //buffer的第一个字节位置,buffer2和buffer3同样道
; `; T* ?7 L+ B+ A9 ~+ p) Z //理
/ }6 u! G) E$ f% `* p- zbuffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置; Y. k! q+ q# `# r6 p8 C3 F
buffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置
j" F D) Q2 J0 }+ Y; i- i9 sfp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件/ ?5 y/ r( l2 `, u3 ~3 g# o
buffer3=buffer2; //buffer3保存buffer2初始时的地址5 U) h' V9 E: F, `% n9 y9 w! O
for (i=0;i<=255;i++)! x, }4 J9 w1 ]$ u7 t1 g
{
4 r6 Z' v8 v: c/ [buffer1=buffer; //buffer1保存buffer初始时的地址
1 ]5 a( \/ U+ \& E0 {: Yfseek(fp, 0, 0); //重定位到animation.cfg文件的开头( @* o' F5 E* {* z7 k. X
fread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer
! r8 j, I- T! N# {6 v# X1 Gfor(j=0;j<16;j++)# z3 g' Q9 O- y- k! y
{4 b' J% h+ `5 R1 \" H* s
*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
: [% n1 a( G; s$ e //任一个数值异或,结果保存在buffer1所指的位置上
) v2 C. w/ p! [7 i. @4 L*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置
: @- c) W) Q, ~buffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据
) n2 L8 S& y7 B& v# ~$ \* ^+ E! O# ?0 pbuffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据5 H+ i4 ~+ ]2 b% g# F
}3 g( Q1 J- {5 u1 q1 `4 h
}8 S5 h9 a6 W* L8 t3 M
fp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入) Y9 Y j6 h# K" `+ j& g
fwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将* g7 P3 e; `3 t9 @3 f0 P" k# Z2 k: q
//buffer2初始时的地址所指的数据,用二进制方式写入! d, [" s# v8 e8 R) v. y
//16×256字节
# ^! [4 ?8 V# F9 f ?0 hfclose(fp2); //关闭文件句柄- s' F( u' C. I( Y7 A2 J# w- M
fclose(fp);' F) P' x$ z; ^8 e
2 |) O7 C9 X2 }. `, e
}
; ~6 E1 R* T, D {. g7 E6 a7 t9 w# M2 w8 _! y
: |! L7 D1 ^" t2 u/ t
http://book.51cto.com/art/200903/112751.htm |