冒险解谜游戏中文网 ChinaAVG
标题:
xmle文件的破解
[打印本页]
作者:
scgame
时间:
2010-3-30 08:20
标题:
xmle文件的破解
饿...本来想还是自己注册个号的,取个有点个性点的名字,结果发现今天不能注册 [s:70]
/ O3 @8 m) A, J& l4 g
3 `' e8 h& h4 p7 @, p
PS.一下,偶是粥粥兽啊,HOHOHOHO
& `2 V; S. g. a+ P ]. E$ o# @8 _
( {2 w: w3 C) z9 {, n9 u
那么就来说一下我对大鱼游戏中经常出现的xmle文件的发现吧
6 L9 {1 _- A P( V A& j4 M. E) c
因为一个偶然的巧合,咖啡发给我的游戏里有个XML文件夹,我粉高兴,觉得这下肯定很好解决了,结果打开一看
- k; G' Z. o4 e. D& S: z$ E
却是xmle文件,改成xml却也是打不开
! E* D2 q4 T9 L
( ]; `5 E7 l. _/ ^) z2 r
用CT打开一看才发现这哪是XML啊
, T8 U# y$ e) r0 P: S5 ^8 x5 j
网上查了查无果,可琢磨着,这不是XML为什么要放在XML文件夹呢,于是我再次运用CT,盯着那些文件看,总算发现
' H; t% u, L4 g# r) v% d& a
他们的文件头
, }& b. H# P4 s* R: M
=>ylm!wdsrhno<#0/1#!dobnehof<#tug,9#>?
# V3 \# I8 ^2 u% g6 b
感觉有<有>还有?怎么看都有点像是XML文件的开头啊,怎么回事呢?于是我找来了份XML文件做比较
' b, F6 }1 |% R9 y2 s
一开始还没发现这么明显的破绽,哈哈,硬是对着ASCII表去看的,发现
- B' V* I) z& A# K6 l
=<, >和? 都在一块,才发现原来只是+1的关系啊
9 M. r- {5 {( F
原来没看仔细,哈哈,破解一下后还不对再仔细研究的时候发现了这个秘密(已经圈出)
4 s2 M. J; \( Z
一开始还没看懂呢,心里纳闷,怎么一会儿是+1一会儿是-1,到底是怎么回事呢?这么没规律,后来追踪了某个字母(好像是e)
3 M& @# V/ j, ~0 t
才发现在那文件里,e一直是+1的,
! g# m' [9 a' |4 H j n
; P, F( U5 r! y" H) c
才发现原来从xmle到xml的转换完全是按照ASCII代码来的
& g/ O; U: c. P: E+ Q
+1 -1 是看ASCII的单,双数决定 (不好意思,我记性不好,又忘了哪个是+哪个是-了...后来写CODE也是....只能在解开来发现不对再改一下.....)
5 g; q( q& [' G+ V0 ~
! I5 _8 D. |& N$ ~9 R2 U+ n
于是我就开始写代码了,很简单的C++代码
' z/ I6 D: l$ _ v
! D& t1 i$ B+ J" n. h
int main()
6 K, S5 C9 C7 K$ t; |6 x1 [
{
- Y- V. @; e. E0 T
fstream fin;
$ y& Z+ o! b2 L. k8 ~0 L
fstream fout;
* W9 J+ i6 ?8 ]' w8 L
//right now we are decoding *e files
% o' F0 P) Y( z. u [% a: A
fin.open("test.xml",ios::binary|ios::in);
$ g& m# }3 X9 k0 U
fout.open("text.xmle",ios::binary|ios::out);
: c2 I8 h" k9 D5 M( W4 Y5 j
6 Q( h% ]: z x
if (!fout.is_open()) printf("outfile cannot be opened\n");
. }2 t9 d8 b4 x9 j9 m; ` \
3 \% t& P _# L
fout.seekp(0,ios::beg);
. [" w* C* i, T# v
fin.seekg(0,ios::end);
* q' {6 {' r% Z* z8 t' M' z
int size = fin.tellg();
& g+ l x' a2 F, I/ h
fin.seekg(0,ios::beg);
/ Z# Q2 t! h8 p. V* }8 I
1 g9 d' e" o7 b, C; }* Y3 @
char *buffer;
. [* l: [7 k8 e7 X* ^( M) X4 W% g
buffer = new char[size];
' [5 G# W% S5 [. f1 R* `, A9 a
fin.read(buffer,size);
) R3 @* b. R5 @1 k" n7 |
printf("size = %d\n",size);
) S% ]$ z3 R4 |
int count;
! n- s0 I$ A8 r p2 v8 R7 l
for (int i = 0;i<size;i++)
. K- Z& g# h$ M) t
{
# Z% ]' s- w4 d
//encoding
0 X# v5 J1 c4 G. E. Z$ E# |
if ((buffer
% 2) ==0) fout.put(buffer
+1); //if even subtract one
7 c8 u3 e! J* j% T+ s2 v
else fout.put(buffer
- 1); //elsewise we add 1
4 v" M0 s) f1 _+ B( I6 _. K
}
9 G* M8 A+ o; |
) K# I) F# k* v( w `( V* k# B8 [
fin.close();
3 d' U4 b' {& M1 ~* U w1 p
fout.close();
0 _% l! V/ M% `1 O6 C- g
}
5 ^6 g9 b! h; B2 K* y
: K! t' X/ T. B7 E4 B* M
那么,需要破xmle文件的朋友们,enjoy
作者:
shane007
时间:
2010-3-30 11:40
非常感谢粥粥兽给我们带来这么精彩的汉化分析贴。
! [1 P/ ]$ @# e% c" t- ^
枫叶给加威望吧。
作者:
woliu
时间:
2010-3-30 12:18
那它的字体文件呢?一般也不是标准的官方后缀,粥粥兽继续拓展分析一下
作者:
scgame
时间:
2010-3-30 20:34
xmle只是XML文件,只是配置而已,字体文件就不一样了
/ d* `9 r/ K: v6 r
' c9 t1 o) R! D% U
不过我上次看到的那个游戏BT的很,连JPG,DDS都带这样编码的...至少我觉得是,因为后面都带了个e,不过我没仔细检查,估计是一样的 [s:73]
作者:
woliu
时间:
2010-3-30 21:29
粥粥兽做个还原程序和加密程序放上来吧,要能批量操作文件夹内全部文件的~~~~
& x4 {' p0 k; ?8 K
* G! f1 C* z3 E( g
感谢
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2