饿...本来想还是自己注册个号的,取个有点个性点的名字,结果发现今天不能注册 [s:70]6 ?4 i' G. g: k: o$ f
/ _6 u: f. l4 f, ~5 gPS.一下,偶是粥粥兽啊,HOHOHOHO& N% {2 t6 P1 v7 j
+ {& Y0 z" ^' o) J; _
那么就来说一下我对大鱼游戏中经常出现的xmle文件的发现吧
: K( W; O5 E) Q7 ]) B因为一个偶然的巧合,咖啡发给我的游戏里有个XML文件夹,我粉高兴,觉得这下肯定很好解决了,结果打开一看 [0 F1 d" V$ C0 z5 b
却是xmle文件,改成xml却也是打不开
" ^. M, F1 F( [7 [& ?, e& I4 s, V- W0 M6 _& ]
用CT打开一看才发现这哪是XML啊* R) y+ l' d3 r3 ]' ]* b [/ j
网上查了查无果,可琢磨着,这不是XML为什么要放在XML文件夹呢,于是我再次运用CT,盯着那些文件看,总算发现, t/ E% x$ b* ]4 }0 @) p7 u4 n: f
他们的文件头% o9 C8 H9 Y, L% x' O) H
=>ylm!wdsrhno<#0/1#!dobnehof<#tug,9#>?& s" n6 f+ Z. e' O
感觉有<有>还有?怎么看都有点像是XML文件的开头啊,怎么回事呢?于是我找来了份XML文件做比较
- ?0 r: L# _' g1 Q一开始还没发现这么明显的破绽,哈哈,硬是对着ASCII表去看的,发现
, E3 T' G3 V" w* y) `% a=<, >和? 都在一块,才发现原来只是+1的关系啊
2 [# X' |& \& T W3 u4 j原来没看仔细,哈哈,破解一下后还不对再仔细研究的时候发现了这个秘密(已经圈出)% G3 D# n0 @1 y! X ]! ~/ B6 `* e
一开始还没看懂呢,心里纳闷,怎么一会儿是+1一会儿是-1,到底是怎么回事呢?这么没规律,后来追踪了某个字母(好像是e)! F, N( k1 N- q3 Z
才发现在那文件里,e一直是+1的,. R( \. k n. E/ D- q, `/ Q& x
" V: |; P* i2 A才发现原来从xmle到xml的转换完全是按照ASCII代码来的
) ?4 a; Q% o+ J% R$ Y* R+1 -1 是看ASCII的单,双数决定 (不好意思,我记性不好,又忘了哪个是+哪个是-了...后来写CODE也是....只能在解开来发现不对再改一下.....)
9 y; H/ s! I/ A- r2 @, [3 ~9 A
/ V+ r: o8 L3 a& ]于是我就开始写代码了,很简单的C++代码
N! ~7 q8 K) O
+ X4 n, q0 E( f: _& y# Rint main()
_ T. |4 j8 I3 G! W* u& c{
! i( R3 ]8 K$ U; U* v; [ fstream fin;
! q: G0 X0 b' |( o! R& v2 s5 V" _! G fstream fout;
- C5 Y! k7 y% G1 i1 E: g% _) m //right now we are decoding *e files
}, w/ U. {& K; p4 o6 F fin.open("test.xml",ios::binary|ios::in);
; f7 d2 X- F/ S& ? fout.open("text.xmle",ios::binary|ios::out);
* o+ K0 n- W& r6 `$ S9 G5 e/ p- f. Z3 c0 Z
if (!fout.is_open()) printf("outfile cannot be opened\n");! a) v! m+ _% P
8 L: j0 R. d: M$ [) K
fout.seekp(0,ios::beg);* n- }% @. T/ }6 ]" L
fin.seekg(0,ios::end);$ \( u5 X$ s% P1 _4 a0 L
int size = fin.tellg();
+ g0 [1 |' O1 K3 h8 b" p! d fin.seekg(0,ios::beg);' Z: D& {, I0 r# R
0 A9 v* s' b7 U* s
char *buffer;" Z, y* i9 }. |5 g K7 x
buffer = new char[size];
& Y. i5 n% [1 c( P( l% g5 A( @ fin.read(buffer,size);$ S& B6 i0 N$ f1 I6 @9 j0 S
printf("size = %d\n",size);
% B4 L/ _8 A: N; k P4 n int count;
2 I6 c/ O4 p+ U for (int i = 0;i<size;i++)
1 D/ j' Q/ A( P% a0 L* s; r {6 E* ^5 x% _' F/ @5 i2 u& i8 E
//encoding
% ~1 n2 \" e) I if ((buffer % 2) ==0) fout.put(buffer+1); //if even subtract one
" ^$ v7 c1 x2 T" S, e; K" R! p else fout.put(buffer - 1); //elsewise we add 10 n: v( |4 r3 }" M
}
/ h/ c& z, \3 T+ F8 b: L
7 O* o0 P: d u$ q$ h fin.close();
% }3 D I7 W2 t6 f6 R- A$ V# I fout.close();
) ?5 c0 {! C$ J o) M}
& C6 B* D' j, K; Z- M$ ]9 K" H0 h' }, W' [" {
那么,需要破xmle文件的朋友们,enjoy |