冒险解谜游戏中文网 ChinaAVG
标题:
异或加密字幕文件暴力解密工具(yaozheng请进)
[打印本页]
作者:
shane007
时间:
2010-2-25 23:32
标题:
异或加密字幕文件暴力解密工具(yaozheng请进)
yaozheng,你好,给你安排一个小任务。
3 m3 i# M, H/ y* f D& Z- a
9 c/ x/ U, ?8 i9 |
对一个被xor加密的文件的头部n个字节用0x00--0xff xor处理后,输出到一个文本文件中。
* D, _" g' z* _7 U/ H; t
用于检测文件的xor key。
/ n9 H7 ?, E1 ]( J) S" G, e e
命令行或GUI均可,n是可指定的。
! p9 d' Z+ {6 `7 }
% Y5 J- J3 S6 h$ r* U; f
有不懂的地方可以回帖问。
作者:
byp100
时间:
2010-2-26 19:48
这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。
, q. Q$ e1 g( h& d: i
- y) S9 g, b4 [# ]+ e: W/ }" q
懂的参考修改完善出工具吧
- ?: ~# N9 V+ T% h2 V5 g8 {
. G9 g% ?" r1 Q* l' O
1 A) o6 A5 s) w# Y5 b$ Q
( H/ A- x: [* D' I4 W2 q, Y
#include<stdio.h>
/ | B3 Y/ T/ f J: F, T# R1 T
#include<windows.h>
3 f% E+ s/ k" b- y. P% J: u' {
main()
5 h$ k E: Y- Y# Y
{
1 ^! i y0 E3 ~' {
FILE *fp,*fp2;
I1 K0 Q$ r8 g) E
int i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置
2 J8 e2 q1 y% M- Z# b- x& c
byte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer2
7 O. P+ X( U( f; n. b5 `4 z# v8 e
//和buffer3
2 {4 p0 Q; V8 a5 v' H
//一组,buffer指针会变动,buffer制作永远指向
' z( P q5 q( c& L' |" p
//buffer的第一个字节位置,buffer2和buffer3同样道
0 t) \* d& D7 { f' }
//理
! G5 x" Z% P/ O7 ~# R% H
buffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置
0 s, @9 N4 F% l. k# A
buffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置
# P0 Q% u- `! c4 Q, S9 D
fp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件
( | A, H8 W9 R M5 D
buffer3=buffer2; //buffer3保存buffer2初始时的地址
7 C) T1 y4 V9 y
for (i=0;i<=255;i++)
# n5 L6 g% y5 s- A* N
{
' k* O- `% l- R* g. n& l6 n
buffer1=buffer; //buffer1保存buffer初始时的地址
: n" v+ \3 I6 ?% {6 G
fseek(fp, 0, 0); //重定位到animation.cfg文件的开头
/ g' v" R6 C) X4 {, N
fread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer
( b- D0 N, d4 h& a
for(j=0;j<16;j++)
: L1 D, w8 K& s
{
c a3 E: M: @8 x& z) ~3 W
*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
7 A$ V$ Z4 e, J
//任一个数值异或,结果保存在buffer1所指的位置上
0 b7 l1 Q4 m6 M7 {' F c! ]
*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置
% }' V' x( D3 w, X& h8 I
buffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据
+ ?, L. P7 \" D+ u' r. o) V$ i$ D
buffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据
$ K+ [9 t* ]9 H! B. W9 N& V! I' e
}
- W/ @) s: i1 S* O' P: s
}
. S) Z: t( W1 a9 q
fp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入
2 G# v' i T: }: ]* f- J% U4 z! s3 K
fwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将
! j2 q& u8 m/ k! ]( n" ^
//buffer2初始时的地址所指的数据,用二进制方式写入
4 O# c, _& X# b; I u$ w2 N
//16×256字节
0 l; T1 b8 H( X; b, O
fclose(fp2); //关闭文件句柄
8 G: D) X) W3 P7 c9 p
fclose(fp);
+ r) ~0 g! ~. x0 S
# y( ?% j! Z" T0 a% C
}
4 m, K R6 p* R" @/ L( r
4 `% x1 F' Y3 ]$ }/ S) x# C
0 b7 d8 f. F0 { ?2 J1 F
http://book.51cto.com/art/200903/112751.htm
作者:
yaozheng
时间:
2010-2-26 21:04
收到,周末俺来研究一下,感谢楼上提供的资料。
作者:
shane007
时间:
2010-2-26 21:05
感谢byp100 ,期待yaozheng的汉化工具作品。
作者:
byp100
时间:
2010-2-28 20:56
我把自己用的编译发出exe吧
$ A7 V! u6 v; K$ z$ ` W2 ?8 a4 v
, J7 N3 A8 C- ^0 o
把需要xor解密的文件改名为“1.cfg,和xor.exe文件放一起,运行xor.exe,生成一个test的文件,用16进编辑器打开test,仔细看那个像是xor加密的吧。
% a' m" q1 T5 w2 @" A( m; v f" I/ h
: x; Q4 v4 M4 S ]
更完善的就等待吧
作者:
shane007
时间:
2010-3-1 21:15
收到,谢谢!
/ T9 y( o% A. ^. S& Y2 Q( W6 s
等我有时间测试看看。
作者:
yaozheng
时间:
2010-3-3 10:51
我搞完了,请看看是否满足要求。
作者:
shane007
时间:
2010-3-3 21:06
收到,不过不完全符合我的要求。
0 P% L, [& C, D2 h
我希望得到的结果是如下这样的,那么哪个key是加密用的key就一目了然了。
7 }- e. {% ]' v+ e
另外,补上COMDLG32.OCX,没有这个的电脑无法运行这个工具。
# a7 Y% b3 u) l2 V
' t& ~2 W5 b, C# _
Key 0x00
3 r+ }+ ~1 l3 D
MZ L[?OX?NY? I^?H_?K\\L[?MZ NY? OX?H_?I^?J]OX?NY?
4 J7 \3 j3 x$ {: \2 d' E
+ k, [3 U, }0 |8 g5 C& f3 M
Key 0x01
! F6 P. ~8 D" C) `5 }
MZ L[?K\\?J]?I^NY? OX?L[?MZ J]?K\\?H_I^?H_?K\\?J]?
+ u0 `) v+ q; G8 D8 ~
4 \) w$ n3 Q: }$ V4 R5 g( d
Key 0x02
/ L: s: j; A/ `1 z; g8 ?4 s
MZ L[?OXH_?I^?J]?K\\?L[?MZ NYK\\?J]?I^?H_?OX?NY?
作者:
yaozheng
时间:
2010-3-4 11:10
不好意思,可能之前理解错了。改了一下,请再看一下。
( Z; o& N9 p0 f& w$ L/ X$ }& p1 ~
5 E% p. J/ _, g% G ?) N0 D
在公司里电脑好像上传文件不行,我先传到网盘里吧。
2 ]: |, U* T. Z/ Y$ F: s2 w/ n
5 d2 |0 g! S7 ~; }# v' }
http://d.namipan.com/d/d8584c25c ... 019da98e70a25fc0000
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2