这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。7 c/ \$ T" t: ^$ l- X
# k# \+ @) a+ g: ^
懂的参考修改完善出工具吧
+ S) _0 B0 X: L$ A7 w" P7 c* X, V9 a4 E. @2 z( H
' o2 F3 E! ~7 @$ N' B' `8 W+ \" ]
; I% g3 s% t( I* Y* C, H
#include<stdio.h>" V1 C( d- |4 X; m/ Z6 m$ o: J: }8 P
#include<windows.h>& D7 F2 }/ k, O( X) T
main()
$ U1 X w1 G3 i$ Z{, D& b( P# v! [# X o
FILE *fp,*fp2;4 i# B! O$ ?$ y; P' U
int i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置
& {" c, V: E4 s+ `/ Y$ c3 E3 h9 |; Kbyte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer2
7 v6 t; }+ \, l, O& P: w//和buffer3
% g$ B) m/ S% X7 M( P //一组,buffer指针会变动,buffer制作永远指向
/ Y# m, A. e: {8 e //buffer的第一个字节位置,buffer2和buffer3同样道2 R; ^1 b( ~* T& |
//理% A6 d+ u% L* ~# i5 \
buffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置
6 q8 @2 F' G0 D3 {buffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置
8 F4 w9 u4 ~7 f" E) [: n. rfp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件
" T% L. D/ U2 u4 u5 O! l0 G* v" ]buffer3=buffer2; //buffer3保存buffer2初始时的地址+ q: X* U3 D1 j* a5 m3 o @% p2 ]
for (i=0;i<=255;i++)
& f+ M+ m- L/ l& u+ L, R{
+ S( R2 V4 z; w$ `! ubuffer1=buffer; //buffer1保存buffer初始时的地址2 N! f% i# V' f5 `8 K
fseek(fp, 0, 0); //重定位到animation.cfg文件的开头
: `1 [+ a2 L8 n$ C' @fread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer
* w; ]) t' @+ b7 R4 Ufor(j=0;j<16;j++)' d8 U* @3 s* ^ B4 B+ P; _. S. z7 e
{
8 Q- K9 s! [8 G8 f q9 u/ j; w*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
, E$ u5 s3 A& a. d5 j //任一个数值异或,结果保存在buffer1所指的位置上0 x; @: \' j6 q) }" k
*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置5 Q' T$ P/ U4 Z% R/ t
buffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据" \5 [, b' F& h- a, ~
buffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据
. P" m- ]* j( L* }1 U" h- O$ z}, t. e$ [3 o! \" x, Z w3 O" m
}) @2 G( y8 M4 p2 a
fp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入
( E, b: n a' u! B) X) wfwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将
: D4 Z: a4 h( h1 z1 c //buffer2初始时的地址所指的数据,用二进制方式写入. f( ^1 `! d5 F# y* O4 B: d, e
//16×256字节
2 y- t0 ?" [% |5 w& L7 mfclose(fp2); //关闭文件句柄
M7 B. F! G# b- Z" Lfclose(fp);0 C7 B; n, c, V. k
1 i+ z! J, t2 [4 G8 c3 i9 L6 Y}+ u9 @9 V% R: t8 b" t# G% c; q/ {& V
8 \8 i4 C* I' O8 f+ M' f; G' b% s- p$ B) Q
http://book.51cto.com/art/200903/112751.htm |