标题:
[魔力私服分享]
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
[打印本页]
作者:
zaozao
时间:
2009-7-19 11:31
标题:
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
2 r) @9 N% W0 T" r魔力私服,最新魔力宝贝私服技术交流
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
7 l' Y* l2 z" H- U* `! |
" Y. K {& ]7 ~3 j
用IDA载入gmsv,分析完成后进入Exports选项卡。
P' r8 p! g3 p+ p: x* ~$ m4 L魔力私服,最新魔力宝贝私服技术交流
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 X- F( a- M+ e
.text:08074098 public CHAR_GetLevelExp
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 P: h, H% Z4 K' Z9 s7 W% a
.text:08074098 CHAR_GetLevelExp:
/ W3 ?6 w0 n' N魔力私服,最新魔力宝贝私服技术交流
.text:08074098 push ebp
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* T" x; e4 L G$ f- c
.text:08074099 mov ebp, esp
+ c( z. u$ m$ w1 @
.text:0807409B mov edx, [ebp+8]
9 ?, a: P7 ^3 A* _7 D
.text:0807409E cmp edx, 7Eh
魔力私服,最新魔力宝贝私服技术交流( R" X t) b! K
.text:080740A1 jbe short loc_80740C0
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 v5 a! I! K% O5 c2 Z6 f
.text:080740A3 push ecx
# K% d- M. J c3 r魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
.text:080740A4 mov ecx, 7
1 y K+ J D1 {0 ^4 Gbbs.mocwww.com
.text:080740A9 push edx
妖城在线论坛! ~5 V. {/ e$ u [; l* { n
.text:080740AA mov eax, edx
w+ i+ W6 G* b% | s( q
.text:080740AC imul eax, edx
bbs.mocwww.com# J7 A7 ^6 H. }! h$ \* I5 Q9 E4 V
.text:080740AF imul eax, edx
$ U8 h/ N& ^7 \魔力私服,最新魔力宝贝私服技术交流
.text:080740B2 imul eax, ecx
( y9 ^% B& Z. C0 J( }—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
.text:080740B6 loc_80740B6:
( X" ]0 ?3 f8 t# H2 ^3 R+ _' A5 \+ q" L
.text:080740BE leave
9 i! Y% \' o$ h7 z- G7 m9 {& F2 jbbs.mocwww.com
.text:080740BF retn
妖城在线论坛0 \9 l" f: x9 K1 l
.text:080740C0 loc_80740C0:
% f6 S: R. N, u—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
8 W% _! p, {2 z: m
.text:080740C7 jmp short loc_80740B6
魔力私服,最新魔力宝贝私服技术交流6 ~) B9 l& y6 S' x
妖城在线论坛3 I9 {6 n+ @3 C7 \
粗糙的解释下这段代码的意思
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: y1 y( C* {2 ~) r6 Q" V
. Q8 v5 L5 [1 e2 V' e9 ~) Y1 y2 P妖城在线论坛
Push edp
3 T, V6 k* c& v' R1 i9 w
Mov ebp,esp
% e {) C/ o! @/ J2 {( x$ U
Mov edx,[ebp+8]
) r1 Y: [" j/ |3 z4 ^# Q8 ?1 r魔力私服,最新魔力宝贝私服技术交流
获取当前等级的下一级存到edx
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ c4 p. i% E: ]8 p/ z; a+ y9 l
妖城在线论坛+ w; @) K3 q7 a) f8 \# Q2 n) z
Cmp edx,7eh
( V/ E, x: A; T8 @9 X魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
将edx与7eh也就是10进制数130比较
. G* A/ y2 u( i6 J# h+ Y2 n' Y$ ubbs.mocwww.com
妖城在线论坛' s; _) c& m+ f
Jbe shortloc_80740C0
" o3 b3 q- O3 T3 h
如果edx小于7eh则进行跳转到80740C0
3 g3 t* W0 z# ?9 m O1 Z妖城在线论坛
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& K( b' f7 m/ ?$ Z. b+ E
Push ecx
bbs.mocwww.com$ Q# T: h( s( j! q( i+ y
Mov ecx,7
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' k+ x) y' \0 Z
给ecx赋值7
1 c. L. {2 ?3 }) f% P
: u0 @/ H$ I" S& Z( h1 w5 s. Abbs.mocwww.com
Push edx
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* C# p X Y4 m0 J/ V2 C( q( D8 C
Mov eax,edx
' L" s' |; B0 M+ O3 l5 H—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
把当前等级+1的值给eax
/ _4 ?2 G' E) H# t9 D+ ]: _# W
k. {5 Y9 G% N—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
Imul eax,edx
魔力私服,最新魔力宝贝私服技术交流, g8 e) _( R) l% R7 f( U: _
把eax与edx相乘,结果存在eax
6 [% Z+ q5 N' J* p1 L* ^
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- V+ O9 M& u- k% N- y/ P
Imul eax,ecx
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' i8 m% D' o5 m6 `
把eax与ecx相乘,结果存在eax
bbs.mocwww.com; b9 I* K4 s0 S+ g+ t& G
, A" f6 P' |0 k魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
Leave
, ~( d- g, J* M" w. L
Retn
. E0 p7 W- r1 u( W3 Z% H8 j
退出这个过程吧,大概
+ B8 }5 l0 R" n8 S |' I
魔力私服,最新魔力宝贝私服技术交流2 P; }! f8 n. W. J, j
Mov eax,dwordptrLevelUPtbl[edx*4]
# m0 ~2 y) @+ N4 F- e
这里是读取经验表的内容给eax,也就是查表读经验
妖城在线论坛% l. Y! b4 n' `) _3 y% _6 ?
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ [+ `0 Q, k3 `. L
jmp short loc_80740B6
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート3 |. K# B( x6 F
强制跳转到80740B6
3 {; W5 f7 U1 F0 z' K q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
" x$ `& a1 M. O! h2 r魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
好了,这段代码就这点意思,逻辑上不难理解。
+ ?- ?$ b5 k2 Z; V9 V$ R. b6 y- c妖城在线论坛
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
妖城在线论坛8 L2 y/ t$ G# n3 h0 t |* e
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート B$ W4 \+ w4 Q" {7 G6 x1 W* c( F
分析完了之后开始修改了,上面的代码具体作用如下:
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 |3 l6 d$ k/ z& r# B$ o
判断等级下一级是否小于7eh,是则跳转到查表。
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 u/ d( K" x8 Q2 _6 y. C X9 V# e7 i
否的话也就是大于7eh时,按照下面算法运算
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' ^* p& q/ F7 T, Z) f* Y# F' u V
.text:080740A3 push ecx
妖城在线论坛: K" l! }: r2 h: H
.text:080740A4 mov ecx, 7
妖城在线论坛+ X6 ~- i: V1 B) Z! C7 a
.text:080740A9 push edx
bbs.mocwww.com' Z: F' @/ X+ W b* w& ^- a4 m
.text:080740AA mov eax, edx
魔力私服,最新魔力宝贝私服技术交流* v9 ~3 y. W! ?1 L7 x1 ^# y
.text:080740AC imul eax, edx
( p8 v/ @$ `; Z9 l) Q( l; w0 }妖城在线论坛
.text:080740AF imul eax, edx
bbs.mocwww.com5 S3 M( t( |& l$ x$ ]8 a7 k
.text:080740B2 imul eax, ecx
6 l) T+ U- @; P5 s" Q3 gbbs.mocwww.com
也就是eax的三次方乘以ecx,这里可以改成我想要的。
$ K) B; c8 |' S
( l& ? Y8 W) s+ y7 h6 U! x—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
我的目标是改称等级的四次方除以50,但是问题来了。
5 P E& r& b+ c6 Z魔力私服,最新魔力宝贝私服技术交流
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
- C4 C* b! [8 W o1 {
9 e+ q% Q# h" \bbs.mocwww.com
.text:08074098 public CHAR_GetLevelExp
妖城在线论坛, _4 q* Q& r8 q
.text:08074098 CHAR_GetLevelExp:
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 E/ B& W" U$ O$ t" y4 }* Y7 l
.text:08074098
) o" T' c0 f2 H0 `, F M妖城在线论坛
.text:08074098 push ebp
9 v) i' {; o7 r% D( g* `bbs.mocwww.com
.text:08074099 mov ebp, esp
魔力私服,最新魔力宝贝私服技术交流5 D, k: E) C B3 S* Q' Q( ^6 m
.text:0807409B mov edx, [ebp+8]
* P5 k% S* G, O% Q' V0 Y$ B
.text:0807409E cmp edx, 0FFh
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート3 a+ p$ _2 d2 P- ]4 I( v" y! p
.text:080740A4 jg short loc_80740C0
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 b$ F4 v1 w2 }7 y7 z ~
.text:080740A6 push ecx
6 w H5 ?, q% C0 c& I/ b) O. f- I—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
.text:080740A7 mov ecx, 32h
魔力私服,最新魔力宝贝私服技术交流- [( T7 }3 t8 M3 D! c! ?
.text:080740AC push edx
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, y5 B. f0 |4 D2 r) B3 p% S
.text:080740AD mov eax, edx
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 o) ?9 j9 c' b0 G+ c' o
.text:080740AF imul eax, edx
& i$ x0 [2 G' P* F- D
.text:080740B2 imul eax, edx
) E1 _( c% @2 P+ W' G1 f魔力私服,最新魔力宝贝私服技术交流
.text:080740B5 cdq
% ^) T) r; t, ^- b" }( q妖城在线论坛
.text:080740B6 idiv ecx
, q/ s- N3 u; _& M1 u. _( f魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
.text:080740B8 mov edx, [ebp+8]
1 J- A5 O7 j8 e1 @2 E, d$ f0 K5 @bbs.mocwww.com
.text:080740BB imul eax, edx
& n' C" O6 A5 Vbbs.mocwww.com
.text:080740BE
4 K+ A) l, ~* T# _* I' k魔力私服,最新魔力宝贝私服技术交流
.text:080740BE locret_80740BE:
bbs.mocwww.com) W) ^# c0 t1 d1 l
.text:080740BE leave
5 r& D B6 |/ ]7 p
.text:080740BF retn
# A; i" n6 g0 D
.text:080740C0 loc_80740C0:
bbs.mocwww.com" W5 `6 p% r/ K
.text:080740C0 mov eax, 0FFFFFFFFh
7 z1 F4 b/ U9 n& g4 g3 ^) L5 S4 v魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
.text:080740C5 jmp short locret_80740BE
* A, L) P( X& B' M+ G妖城在线论坛
魔力私服,最新魔力宝贝私服技术交流' f# r' J% }/ z- @& \' H- B3 f0 R
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
$ H1 B8 k) l& [. {) N1 n6 ~& obbs.mocwww.com
Cmp edx,0FFh
妖城在线论坛7 @& I9 K% k+ l6 O6 s- Z
Jg shortloc_8074C0
m% B7 a, Q; t8 V: a3 l: Q妖城在线论坛
判断等级是否大于255是的话跳转80740C0
. o9 ^3 o: v& ]! c/ T
否的话进入我们的等级公式:
魔力私服,最新魔力宝贝私服技术交流. E# V7 H, O4 Q- ?
(等级*等级*等级除以50)*等级
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 a+ }/ w0 h" p% \2 w/ }- q
也就是等级三次方除以50再乘以等级
2 m5 p8 J/ \3 K6 @! y妖城在线论坛
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
% z1 ?8 M9 f$ |5 j0 j" N
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
妖城在线论坛 j2 T5 p# `! i1 O" t! A! h9 ^
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
. x! H' J% K6 ^5 W! Z8 Gbbs.mocwww.com
( b: @+ l. [+ }0 `妖城在线论坛
接下去做公式:
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 c- v9 G3 B+ \- }
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
bbs.mocwww.com5 w, Y* K" S; Y3 r {
Mov eax,edx 将下一等级的值赋值给eax
妖城在线论坛( i' z8 A0 P) ]5 [# F+ E
Imul eax,edx 将eax,edx相乘,结果存到eax
7 J: P, G* r, j' l4 O ~* i! Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
Imul eax,edx 同上
0 H d+ u% p0 _6 a, ?魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
Cdq 这个做除法不加就会出错,用户登录后服务器当机
i3 ]& w1 o: h6 G) F; Z' p( }
Idiv ecx eax除以32h算到50倍经验
bbs.mocwww.com/ [3 O+ e% r$ N: W* a a
Mov edx,[ebp+8] 从新获取下一等级的值
$ C8 ?2 k9 z; V- A
Imul eax,edx 将eax,edx相乘,结果存到eax
魔力私服,最新魔力宝贝私服技术交流' z6 Y4 t" j2 h5 `9 R t/ O! Q
/ P# T, k* n1 R) J' X; G+ z魔力私服,最新魔力宝贝私服技术交流
好了,这样就完成了运算过程。
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 E, d6 x' h4 l: h) A) R
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! M0 I# E+ Q9 d0 G' w4 \
.text:080740C0 loc_80740C0:
1 I2 v- r# [( i p! b% U6 R8 A, Pbbs.mocwww.com
mov eax, 0FFFFFFFFh
1 i) \ N. X, e: U# ?6 G—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
jmp short locret_80740BE
3 ?. K5 u9 K4 _, e+ Q妖城在线论坛
这一段代码就是等级超过你设置的上限之后返回-1。
妖城在线论坛) F3 f7 }3 L+ l) L
魔力私服,最新魔力宝贝私服技术交流2 J4 ]' \ x3 q9 q' G" I
" @! b0 H4 Y9 ^/ H0 t9 Y" j9 b. Z魔力私服,最新魔力宝贝私服技术交流
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
8 W3 o4 |9 d* M3 U$ S4 C" i0 P. @% o魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
这里就要用到FlexHex了。
9 N* u) A4 ?) a4 [& Y
" I% f$ x- m& o: K7 O' r% s
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
; e9 U4 Y% I! D$ s" |- ?2 d J6 X
如下对应:
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 {. x8 A- p/ o; @
Cmp edx,0ffh 81 FA FF 00 00 00
1 M2 _2 P9 k, [6 Gbbs.mocwww.com
jg short loc_80740C0 71 FA
妖城在线论坛; C1 F- n9 i. W% c; Z
mov ecx, 32h B9 32 00 00 00
0 L, D, P. o. l: K) b9 {
: p8 M6 h7 s& N! g) }6 R妖城在线论坛
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
- a9 ~* g% d( |" N3 L$ Z妖城在线论坛
这个挺有乐趣可以自己慢慢享受摸索。
% S3 o3 D! b; G8 V4 d2 J6 {妖城在线论坛
+ V) Q6 D/ N) xbbs.mocwww.com
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。
作者:
Maldiniymx
时间:
2009-7-19 11:49
好文章, 可以帮很多入门的来修改~
作者:
小狐狸
时间:
2009-7-19 12:20
看不懂.............
作者:
lingjin3
时间:
2009-7-19 13:04
学习学习
! `' m. ^% V8 V2 Q魔力私服,最新魔力宝贝私服技术交流
谢谢楼主分享经验
作者:
剑帝
时间:
2009-7-19 15:18
感谢楼主分享,顶!
作者:
feifei1937
时间:
2009-7-23 14:17
很不错~呵呵~
继续深入,到call语句的调整和为自己的语句腾空间还有搜索无果而必须自己对着opcodes写机器码就有趣了……
欢迎光临 妖城在线论坛 (http://bbs.mocwww.com/)
Powered by Discuz! 6.0.0