这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。
+ e* g* T8 C0 D( @2 r1 E! ]/ u: z, s" w! q; v# @+ [
懂的参考修改完善出工具吧
4 h# t# E3 B& f |8 D$ K' v
% _4 @9 F2 m8 h7 K; X& C0 w
, b E, I+ L1 y
6 |8 a3 [) v4 u+ t3 V# g#include<stdio.h>
0 _3 Q* P/ L z$ A" Z t#include<windows.h>
' h u0 \* x6 F5 \7 umain()
. Q1 m, S1 [" Z2 }, M1 E{
! y b! Q9 g# `% C0 `FILE *fp,*fp2;/ Y6 H7 T' m& }* y
int i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置: W! {/ _0 L1 x6 @7 ]& V! O! ]$ _$ y1 O
byte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer2* e% ]5 q4 S" q& a; t% I! s
//和buffer38 K& z& {4 V) i3 I6 N/ ~
//一组,buffer指针会变动,buffer制作永远指向2 j; B; B; w7 J7 l3 k9 W- O
//buffer的第一个字节位置,buffer2和buffer3同样道
7 ]4 O$ `+ h, \8 ^3 X( ^ //理4 G" P2 S* \' ?6 e& h9 i6 q
buffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置
5 m( P. G1 o% Z, _" ybuffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置0 e+ s' k) Z4 C4 r2 y2 J
fp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件
. [! |$ V5 ?# y; D( ibuffer3=buffer2; //buffer3保存buffer2初始时的地址1 r0 Z* [5 h1 ~5 g% W- Y
for (i=0;i<=255;i++); l0 J( S* M# x
{
+ P) H, Y# m) G9 J# tbuffer1=buffer; //buffer1保存buffer初始时的地址
% D; o, j0 r- [! _6 [; |fseek(fp, 0, 0); //重定位到animation.cfg文件的开头
3 `- o0 A5 O/ h* T6 `1 mfread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer
V# d0 v9 B5 ]) ^) n! Bfor(j=0;j<16;j++)0 v. D. q5 d/ K r S
{
3 Y, O# n3 p7 Z, B, j/ v! C. t*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
: p9 s: a* o8 U! _) f0 \( M0 a* l$ C //任一个数值异或,结果保存在buffer1所指的位置上
+ F1 _5 U5 ~$ m" q*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置* s: m5 b9 q6 M, ?
buffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据$ x6 f) r9 ^+ B, F
buffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据
4 D4 G" x. u5 Y5 _}+ I: r$ q& ^# I% b; i! _
}& D, X1 k* V1 x
fp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入
" f, i+ o/ C$ \. X3 G+ [fwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将
) t9 X# a4 y, Z7 K. f" h' r //buffer2初始时的地址所指的数据,用二进制方式写入7 U4 `: C1 L- F6 x, |
//16×256字节0 c& Q5 n, s$ q
fclose(fp2); //关闭文件句柄
. a# }& z. N6 |4 Y+ K i# `$ Ifclose(fp);
; C7 H" k9 ?; m. _ C" p+ ` T) A7 U( _, s& M
}
5 \7 S) q, ?; F5 a! v1 }# z: n W. U, H2 T' m" y) \$ B7 X
8 E, ?4 ? `; Z4 E; x
http://book.51cto.com/art/200903/112751.htm |