饿...本来想还是自己注册个号的,取个有点个性点的名字,结果发现今天不能注册 [s:70]
3 \) R) `' K C& f2 N
6 g; m) \* z0 J' P9 [4 k; MPS.一下,偶是粥粥兽啊,HOHOHOHO) E' I. x2 u4 `1 h) C3 l& N
7 F4 L$ y# i6 p5 X; t% W
那么就来说一下我对大鱼游戏中经常出现的xmle文件的发现吧
, {' F+ r2 P* P4 M6 e3 @, U' I因为一个偶然的巧合,咖啡发给我的游戏里有个XML文件夹,我粉高兴,觉得这下肯定很好解决了,结果打开一看. c% B9 ]% s7 x% u- ~8 d j
却是xmle文件,改成xml却也是打不开
- _3 |( y$ [4 O$ b9 c: ^! N. r
5 Q8 D- U4 F4 |; u! f# V用CT打开一看才发现这哪是XML啊
: C9 s/ W+ s3 G网上查了查无果,可琢磨着,这不是XML为什么要放在XML文件夹呢,于是我再次运用CT,盯着那些文件看,总算发现) m7 D; s; X% d, e1 b
他们的文件头
2 Y, {0 A, N2 R4 j( Z8 @5 j=>ylm!wdsrhno<#0/1#!dobnehof<#tug,9#>?
0 `) C* e: k7 w- i5 a0 Y感觉有<有>还有?怎么看都有点像是XML文件的开头啊,怎么回事呢?于是我找来了份XML文件做比较
: x6 X7 u# b- {: I q& {0 O4 w一开始还没发现这么明显的破绽,哈哈,硬是对着ASCII表去看的,发现
6 t1 @" ]1 W6 u4 Y3 o9 s) K=<, >和? 都在一块,才发现原来只是+1的关系啊7 N4 a( k8 W% L6 @2 e4 J
原来没看仔细,哈哈,破解一下后还不对再仔细研究的时候发现了这个秘密(已经圈出)
$ P: c! V0 i |0 [3 J一开始还没看懂呢,心里纳闷,怎么一会儿是+1一会儿是-1,到底是怎么回事呢?这么没规律,后来追踪了某个字母(好像是e)0 q% x( D6 s. U6 Z
才发现在那文件里,e一直是+1的,
8 I5 Q( Y2 y) j! q" \! V
2 v7 T6 K, a8 Q# `4 [0 N才发现原来从xmle到xml的转换完全是按照ASCII代码来的 \3 W# k" @4 g# M
+1 -1 是看ASCII的单,双数决定 (不好意思,我记性不好,又忘了哪个是+哪个是-了...后来写CODE也是....只能在解开来发现不对再改一下.....), H L$ g0 r' Z# W4 ^4 O: `
& I: _- ]2 F: \/ W F/ a3 A7 W
于是我就开始写代码了,很简单的C++代码6 P% ^$ b( A/ |* g) V
5 n1 K% E( ^7 kint main()4 p0 G: }1 j# {& f
{
- R( K/ o+ S, T# I/ ? fstream fin;
' f! M: m1 b! `$ V/ X3 `' x% P V fstream fout;2 I% q9 Q9 P0 m U
//right now we are decoding *e files+ R4 n, M) }* N* b% z2 H
fin.open("test.xml",ios::binary|ios::in);
7 u8 G$ k$ i& X6 k fout.open("text.xmle",ios::binary|ios::out);4 I4 @% m# S' P& B( D4 _/ ^
4 U& Y9 k+ X' M4 i8 Q3 T7 A if (!fout.is_open()) printf("outfile cannot be opened\n");3 j3 T3 g" ]) O: b% v5 a$ q
: j$ x8 I6 r% q6 q. O
fout.seekp(0,ios::beg);
0 L6 L! U/ ?) c6 R, j: q+ H fin.seekg(0,ios::end);0 ^ k% }$ C7 ^2 v1 o
int size = fin.tellg();
. k7 @2 d- \0 t fin.seekg(0,ios::beg);3 g$ J1 \# Z+ |" e( r
7 ^2 ^/ h' |) I char *buffer;
! l1 y! [. B) A7 ~7 M; v" Z& ?: K buffer = new char[size];% e' |' R3 Y. t: l2 a
fin.read(buffer,size);9 b) E: d6 O/ d4 R% p, Y& P
printf("size = %d\n",size);- [6 g8 i, }* j& m
int count;
+ t- e5 _ M6 w, V, G" }0 ?) | for (int i = 0;i<size;i++)
$ { G+ q4 D; f1 E {6 n: N" x1 Y v$ k: V
//encoding# F- j, b( j* f- G* A2 T# o q
if ((buffer % 2) ==0) fout.put(buffer+1); //if even subtract one8 b3 n2 t% T) t9 n4 B" M# v6 w
else fout.put(buffer - 1); //elsewise we add 1* e+ s) d. \2 ?! |% u
}% c. t. B5 p1 y8 M7 k9 e& v/ L5 d
0 m. I) |& s D2 G
fin.close();: D+ C7 Z0 d& J) f) ^" ^: Q9 D9 B
fout.close();( {# q$ g. _ C0 @4 \' @
} X; z; K( P( z- w7 D8 a
2 `/ P! A5 b6 H4 z8 \那么,需要破xmle文件的朋友们,enjoy |