这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。
$ Q- H# M: q* J" }0 {3 r8 k
; [! P: }( |9 _* E9 @! M' b懂的参考修改完善出工具吧; s, F# v# K+ i7 V( {/ a- d3 Z
# b* c7 j" i" w8 p, C
, z* Q. G' k0 n: Y! V6 h+ e
5 R% d; r& E8 L/ g: ~7 |#include<stdio.h>
8 W5 [9 K8 n3 o! b! j* q3 _#include<windows.h>1 V) `: Q/ a u' b
main()$ f' t$ C$ U9 R% F; b+ R
{5 y7 q, k2 |, S- f# D
FILE *fp,*fp2;
7 S3 O' l9 Z. c+ d* Sint i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置
. v* l& a9 q0 {/ ]. y( abyte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer2
" m( \( o6 m1 G! ~" Z+ F( [//和buffer39 d1 ?) I" x4 C( p; Y
//一组,buffer指针会变动,buffer制作永远指向3 t2 a! V4 I N2 O# `) }+ l' i
//buffer的第一个字节位置,buffer2和buffer3同样道
5 d4 f+ h2 h3 B* N //理
) v! w3 h) X& K8 mbuffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置
! q* i( ^( v# j7 M5 a# D7 tbuffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置
/ y$ Q1 Q& K; i/ Z9 G f- a+ efp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件* d; p* n% i: O4 ^9 p
buffer3=buffer2; //buffer3保存buffer2初始时的地址+ }! q1 ] M6 {$ q
for (i=0;i<=255;i++)8 d4 f6 K, E; o- c; m4 H
{5 N7 R' b. ~/ ?2 A: J
buffer1=buffer; //buffer1保存buffer初始时的地址; L5 Y% ?, x0 Z! d( t
fseek(fp, 0, 0); //重定位到animation.cfg文件的开头% i% n* |0 o T. {' D
fread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer
! H0 g$ z! a/ u! sfor(j=0;j<16;j++)) L& C6 \- E! l M1 F4 A
{5 B( X6 |# k+ f( K8 y- N
*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
: n' @5 z% \ c! H7 p/ Q: o; X //任一个数值异或,结果保存在buffer1所指的位置上' F! h0 ^' |. L" d! x, L' d
*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置
& m1 @9 F }! E0 cbuffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据" _! ~% n7 L' K8 r4 e; t
buffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据
5 i& t5 R5 j3 ]8 n2 Z8 c V}3 y5 R, |0 Y& _
}* F$ b9 C, I6 g, O0 A
fp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入/ y; q+ n2 U! |2 x1 j' H* b
fwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将9 ?, N4 [( h, s5 }( F, x
//buffer2初始时的地址所指的数据,用二进制方式写入
4 \4 _7 u5 s# g //16×256字节
% |. W# }1 N% Gfclose(fp2); //关闭文件句柄
# n& s- d+ t& Cfclose(fp);
, G" k+ L$ N$ f8 D) C3 t, S$ H2 J E2 T1 R' y9 _. u& p+ G8 p3 Y j
}
1 t& @$ ]4 u8 m. r/ l
' L2 o6 e, i; b9 \. H
7 M, @9 W, y9 R4 @2 b. @+ Nhttp://book.51cto.com/art/200903/112751.htm |