这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。
G# {) g5 j, I) W' P B
5 }' _- Y$ W& d0 }) y" p懂的参考修改完善出工具吧; G) _, L3 q d3 s8 y: b1 Y6 T. L: P
) O* l( o1 k$ F0 j" q! c
- |5 W3 l/ d$ f7 B( P, [6 M: n0 B. c! r P- Z
#include<stdio.h>
2 z( K. ~# X% L1 o#include<windows.h>; B1 Q. h" t: t% I) z3 z
main()1 T* }1 m% O7 c2 `+ g4 |$ g
{: k. B* m4 B, u# R' g
FILE *fp,*fp2;5 k- Z: g1 w8 g5 ~
int i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置& m+ V$ M: S5 Q6 U9 u
byte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer2# }3 w& E8 E6 G V! J8 m W
//和buffer3
) B! f' g+ n& Y1 L% c9 K //一组,buffer指针会变动,buffer制作永远指向
8 i, s5 N$ z& c$ i9 S' p //buffer的第一个字节位置,buffer2和buffer3同样道 ~! G1 Y c) g% H& M$ F
//理
9 _( E6 M/ n, h" o. hbuffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置: n* c b. }, D+ y
buffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置, d4 |. n3 f3 B
fp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件
( q! T! ?. m9 L+ g3 L) {# M$ Zbuffer3=buffer2; //buffer3保存buffer2初始时的地址
& E2 e" O7 Z% t0 J8 v# p7 ufor (i=0;i<=255;i++)
3 e0 ]) I( o; c0 D{
& H/ T& M _, ], D# N& N6 f5 ~9 Jbuffer1=buffer; //buffer1保存buffer初始时的地址7 A* y. f& A' m1 ~- n( u+ `+ t; F
fseek(fp, 0, 0); //重定位到animation.cfg文件的开头
4 c; n! W9 u# t2 }% |9 Cfread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer
' M& Y0 y/ k9 E$ L1 w" Tfor(j=0;j<16;j++)
$ A* F9 C+ c3 [1 ^* t, c) o+ C, L{
: u; ~+ @/ l% T8 O*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
4 c" }, a2 V% n //任一个数值异或,结果保存在buffer1所指的位置上0 o% h5 m- ~. v8 h* b7 u
*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置
( |. t7 J6 }9 n" r! @( ]buffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据
5 g( m' j+ p: ?* [' qbuffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据
; o7 p; ^( p3 t3 l' T4 i; C: F2 W! y}* X$ i; z2 g: W* D r
}6 c9 E8 O* a: }" T4 p$ o' H
fp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入
% X, p& i( d& c5 Q& z5 Tfwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将
$ R( ?. d; l& I. s3 ~1 X4 h4 ` //buffer2初始时的地址所指的数据,用二进制方式写入 W9 R- ^. k! @0 P" |$ Q
//16×256字节/ ]) f1 ]1 ^3 u: |4 ?/ P
fclose(fp2); //关闭文件句柄
, G9 M3 i, C: r Y# o8 h# hfclose(fp);$ k( S/ t) J. N7 @
; v: ~9 X- E+ r3 @
}
% G' X4 ~7 x: ?4 T8 l/ M5 @6 s4 ^" A: @
: b& B0 q0 U T" K2 Hhttp://book.51cto.com/art/200903/112751.htm |