这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。
3 f2 y V+ `1 z2 [) k) l+ b$ _/ H$ C0 O: [+ l
懂的参考修改完善出工具吧: W! e) I; \2 L) q2 H9 R
9 Z, Q+ m: e2 o+ N/ |$ k1 `9 F. g& N2 Y0 M) Y8 P/ {
6 J; ?' @% `. r) m: l
#include<stdio.h># m+ T: M( N+ U6 D- {" m
#include<windows.h>2 \2 L$ m' R- `' ~& q" e7 K9 J
main()6 q5 S! }1 Z8 _
{- b, F7 \0 R, g$ f
FILE *fp,*fp2;) k- K) [+ V6 z* J) Q# r% _. Z. B" W
int i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置/ i' v/ [& t6 Z
byte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer2
A$ {+ q r% M, [5 m//和buffer36 y! [% s( j6 s1 K- k
//一组,buffer指针会变动,buffer制作永远指向, k) }2 }- S5 l/ |- l
//buffer的第一个字节位置,buffer2和buffer3同样道! Q0 E9 c: e8 g' q6 ]: @ b
//理
' |7 y) X4 F, p7 ~' V6 l8 O6 G# A$ tbuffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置3 F# m' ?% D( n) g2 x, H3 ^
buffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置- u3 a, n1 z( E, k+ Y
fp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件0 f) ]4 ~. Z0 h" y* p+ C8 x8 Z. ?
buffer3=buffer2; //buffer3保存buffer2初始时的地址
7 m, Z2 A/ _" R! a ~: v8 Hfor (i=0;i<=255;i++)( J' y& O$ k1 A* _
{
5 N# T+ o8 t9 A# S- abuffer1=buffer; //buffer1保存buffer初始时的地址8 K; G4 G( o9 G p: B' D
fseek(fp, 0, 0); //重定位到animation.cfg文件的开头; E* k# ?7 z3 p% r- R% K. w! [
fread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer
3 A& q N$ |" \* s) l3 `3 @1 Q* t) Jfor(j=0;j<16;j++)
* G+ g% K* j( b5 a' G{+ ], r3 b, `7 e5 P
*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
# \% c! P$ S( G //任一个数值异或,结果保存在buffer1所指的位置上7 R& d5 W" P4 U( S
*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置
' t. g. D8 z8 R7 @, Q, K2 bbuffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据$ y" A7 B; e( |7 I
buffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据3 m4 B. h* M y; s
}& j) ] i) h# d+ o& n
}! N% H2 h: o; h$ Z4 s
fp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入" V$ J. a' [6 b) Z# E: }* u4 l- t
fwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将
2 e- l; C* K/ S) x* M. {0 |/ }( }0 E //buffer2初始时的地址所指的数据,用二进制方式写入
o- d1 C& q1 u' O& K/ o M6 V //16×256字节
' s- }7 y* ?$ j" Z& V+ hfclose(fp2); //关闭文件句柄/ {% T0 K; U; X- `% \! P
fclose(fp);
- p( ~! C, @& e$ N, J$ I( ^- B5 O h* t% @
}4 J# l- U5 w q( P, i% {
$ Y. N$ Q2 X2 u- I, a/ _. O/ Z* s0 z: j r2 Y- w
http://book.51cto.com/art/200903/112751.htm |