Board logo

标题: [魔力私服分享] 没有汇编语言基础,参照网上无数教程和相关资料,修改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$ UMov        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.comPush              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.comCmp              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" N216的四次方是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.commov     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.comjg      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