冒险解谜游戏中文网 ChinaAVG
标题:
异或加密字幕文件暴力解密工具(yaozheng请进)
[打印本页]
作者:
shane007
时间:
2010-2-25 23:32
标题:
异或加密字幕文件暴力解密工具(yaozheng请进)
yaozheng,你好,给你安排一个小任务。
, G7 L$ E/ ^6 ]) L! q% y$ p
# q/ V; A2 D% T4 \5 m: E1 P
对一个被xor加密的文件的头部n个字节用0x00--0xff xor处理后,输出到一个文本文件中。
! q! y, o8 U! H% Z
用于检测文件的xor key。
! M- T1 L; D3 I$ z7 n' k4 W0 n; P
命令行或GUI均可,n是可指定的。
% m. V/ j: f7 T$ W2 S
5 Y; W. x8 A2 R! G* Q% G
有不懂的地方可以回帖问。
作者:
byp100
时间:
2010-2-26 19:48
这代码我网上看到了,直接拿来利用,我一般是把16个字节改成64字节,把要xor的改成animation.cfg,然后生成个test文件,用16进看看数据那个像吧。
5 @7 z1 n! n0 _
2 ~3 I/ \4 W9 S \, [3 |
懂的参考修改完善出工具吧
' B* }3 s/ ^& W( K& J/ n
/ H2 C, C" R7 e; W' v1 ?* E" y
6 U8 p# j6 F* S/ z D
7 c' G0 Y* H" J4 Z
#include<stdio.h>
/ t n: N0 p- m. J% g
#include<windows.h>
4 o: L' G: O- B3 H
main()
/ |' [9 n' _0 x" G. K- t
{
: h2 a. S/ A% V8 V3 |2 u
FILE *fp,*fp2;
! R7 [/ r6 r$ \# e- T
int i,j; //i用作记录0到255之间任一个数,j用作记录当前XOR的字节位置
! F# }$ q6 r! Y" u! y3 n9 A
byte *buffer,*buffer1,*buffer2,*buffer3;//指针buffer和buffer1一组,制作buffer2
' _6 ^8 t, q2 c3 a
//和buffer3
" l8 G: N6 _5 u, }
//一组,buffer指针会变动,buffer制作永远指向
t$ o' e; P# e# O- U! m8 A
//buffer的第一个字节位置,buffer2和buffer3同样道
6 l; J9 O3 q, a; s: {' n/ J y4 k
//理
% Q% ]( G) y$ m. u
buffer =(byte*)malloc(16); //分配16个字节给buffer指向的位置
; W C. J- ^; j3 o0 r7 p4 s
buffer2 =(byte*)malloc(16*256); //分配16*256个字节给buffer2指向的位置
$ i; R% ^( r- S5 ]
fp = fopen("animation.cfg", "rb");//打开怀疑加密了的文件
; t8 S( @2 G- a3 k
buffer3=buffer2; //buffer3保存buffer2初始时的地址
( D- g/ d2 D Q5 X5 R; d
for (i=0;i<=255;i++)
! ^# n5 V+ i1 M+ h Y$ O9 `: q+ X
{
5 g0 u$ r7 X$ h
buffer1=buffer; //buffer1保存buffer初始时的地址
9 s+ _5 G' j% ~ X- B5 S' X
fseek(fp, 0, 0); //重定位到animation.cfg文件的开头
6 a8 s) M2 Y( {9 M
fread(buffer1, 16, 1, fp); //读取animation.cfg文件的开头16字节数据到buffer
/ v# x( ]* I( `
for(j=0;j<16;j++)
& l9 |) Y& y& B- M0 X8 P6 S) Z
{
9 @8 ?( K, r# b3 {
*buffer1=*buffer1^i; //animation.cfg文件的开头第一个字节和0~255之间
# D3 Z3 {; J$ m& q% B" Q
//任一个数值异或,结果保存在buffer1所指的位置上
( K. T4 H: H7 G7 A# C/ F
*buffer2=*buffer1; //将buffer1所指向的数据复制到buffer2所指的位置
+ p' J, r7 P, l: @) f5 Q( P
buffer1=buffer1+1; //buffer1指针加1,准备读取下一个数据
; `! L" I' }2 D/ N& V6 b0 |
buffer2=buffer2+1; //buffer2指针加1,准备存储下一个数据
/ I7 ~" F" F9 E+ ^# g+ ~( h& |/ o
}
, m O! t9 M: A: h# i! v7 x# p* u. e; X
}
& O& c; V6 c0 ]
fp2 = fopen("test", "wb+"); //打开一个二进制文件,准备将数据写入
; Q$ a/ c/ Z" Y$ }2 b) k# Y' k- A
fwrite(buffer3, 16*256, 1, fp2);//buffer3保存buffer2初始时的地址,这个语句将
2 u- z' k# E& v$ l
//buffer2初始时的地址所指的数据,用二进制方式写入
! g9 P) Q6 @* W1 n" o
//16×256字节
4 y. H- k2 a% I
fclose(fp2); //关闭文件句柄
5 F$ E: B( Y- z, A+ `
fclose(fp);
6 e6 ]; ]' \0 z6 }; F
1 a; y% a! |$ V/ s* P9 \6 V
}
$ i8 M) N% |0 z$ I5 q
& K2 }+ _; I2 Q2 T& \. V
3 C" S% @( ^1 ?2 [% J
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吧
! Y, I$ O% B u' M; \6 ?, \, }
8 N- G8 x. K( c2 z
把需要xor解密的文件改名为“1.cfg,和xor.exe文件放一起,运行xor.exe,生成一个test的文件,用16进编辑器打开test,仔细看那个像是xor加密的吧。
* u( l( r1 a. D& t
. |0 k8 K# p8 T) R# u4 Y! @+ \
更完善的就等待吧
作者:
shane007
时间:
2010-3-1 21:15
收到,谢谢!
8 C5 x: \( R% C& t
等我有时间测试看看。
作者:
yaozheng
时间:
2010-3-3 10:51
我搞完了,请看看是否满足要求。
作者:
shane007
时间:
2010-3-3 21:06
收到,不过不完全符合我的要求。
1 i7 Y4 H, Y% G* b
我希望得到的结果是如下这样的,那么哪个key是加密用的key就一目了然了。
/ W- P" p: h0 U, Z2 k& t# [
另外,补上COMDLG32.OCX,没有这个的电脑无法运行这个工具。
9 l) j4 _& y6 |9 x9 \
; f# h- G+ o k
Key 0x00
& m( d1 E( y& G F
MZ L[?OX?NY? I^?H_?K\\L[?MZ NY? OX?H_?I^?J]OX?NY?
8 x5 E* ]: \8 |% U( @
/ U# K0 O5 F9 v, ]+ s3 _/ D8 Z5 U% k
Key 0x01
6 b( k6 v4 \' U5 @
MZ L[?K\\?J]?I^NY? OX?L[?MZ J]?K\\?H_I^?H_?K\\?J]?
* |, G8 c# ]' A& Y8 m0 L/ y
) P4 e& V/ {& y' Z8 p
Key 0x02
% H# C. P6 k$ S2 R
MZ L[?OXH_?I^?J]?K\\?L[?MZ NYK\\?J]?I^?H_?OX?NY?
作者:
yaozheng
时间:
2010-3-4 11:10
不好意思,可能之前理解错了。改了一下,请再看一下。
1 a8 b# B$ o/ U5 ?% c
( C: J3 X. a- c/ y# ]
在公司里电脑好像上传文件不行,我先传到网盘里吧。
/ A4 G. d) x' `5 q( I
N) J, ?3 S, W) T" K2 `3 l
http://d.namipan.com/d/d8584c25c ... 019da98e70a25fc0000
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2