发新话题
打印

[魔力私服分享] 没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
  n$ R+ f; ?) \! t: T妖城在线论坛使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
5 J+ y' f# G; J0 P$ a
* i( Q6 s' T$ m/ T; ?0 ~+ s—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート用IDA载入gmsv,分析完成后进入Exports选项卡。
. ?6 b: U2 w% E1 C0 G搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 妖城在线论坛6 q7 w4 k) R+ D# t/ `; A1 s6 ~% u
.text:08074098                 public CHAR_GetLevelExp
7 M$ C$ J+ [0 w, T5 b- k: m魔力私服,最新魔力宝贝私服技术交流.text:08074098 CHAR_GetLevelExp:
! f( }  @6 b8 {3 F$ g% H9 ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098                 push    ebp
, J+ ~- l4 }7 c( o5 |: l—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074099                 mov     ebp, esp bbs.mocwww.com! X$ Q: [8 G$ u
.text:0807409B                 mov     edx, [ebp+8]
' w8 w& [( l! F# c" ?bbs.mocwww.com.text:0807409E                 cmp     edx, 7Eh 魔力私服,最新魔力宝贝私服技术交流4 |) O. P- H0 o2 J9 v  f/ H+ c5 ]
.text:080740A1                 jbe     short loc_80740C0
, d/ V1 I+ e5 w7 z. [魔力私服,最新魔力宝贝私服技术交流.text:080740A3                 push    ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- R9 x8 f. t) X
.text:080740A4                 mov     ecx, 7
9 U& O1 |8 H; @6 N0 d  z' l- z.text:080740A9                 push    edx 魔力私服,最新魔力宝贝私服技术交流, S* P8 T1 x& K3 J3 S
.text:080740AA                 mov     eax, edx
  M" m$ F' N" `' `—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AC                 imul    eax, edx
. L* g# X* H! o, n& M4 v魔力私服,最新魔力宝贝私服技术交流.text:080740AF                 imul    eax, edx bbs.mocwww.com- c+ v9 L9 [. C  k
.text:080740B2                 imul    eax, ecx
7 M$ o/ [: Y9 e6 J7 v5 q& B妖城在线论坛.text:080740B6 loc_80740B6:   
3 X9 W- y0 G2 Abbs.mocwww.com.text:080740BE                 leave
, }, T$ V& m, P! D9 K' j# e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BF                 retn
' \( _! t) l9 ~0 K' j8 [bbs.mocwww.com.text:080740C0 loc_80740C0:                           # b* B, i* \3 X2 A, l
.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4] % \/ ^9 o8 I  c2 D" f  L; j
.text:080740C7                 jmp     short loc_80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( p; o3 h8 z+ _  ]; S$ b
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, A- D- D6 f, {. A
粗糙的解释下这段代码的意思
7 a$ @  o6 t) P; n( F; Pbbs.mocwww.com魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ F8 O# `; w3 }$ h3 x7 [
Push              edp
' g* z+ i; p6 C0 q6 X3 T魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov        ebp,esp
0 b2 \( }! i7 [  M  Kbbs.mocwww.comMov        edx,[ebp+8]
4 z* E6 R1 u- M& P# M魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表获取当前等级的下一级存到edx
$ J' j/ b' T# u
1 g) p+ F4 Y' |! L, S: {" q6 F- F魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp              edx,7eh
0 k7 j; j( p  U! H3 R+ H妖城在线论坛将edx与7eh也就是10进制数130比较 % l: U" r% @: B9 b& `) ~" u

5 G, z9 P  H% Z1 [; i. e; n  o" wbbs.mocwww.comJbe         shortloc_80740C0
; E7 F3 R' R4 B6 N4 `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表如果edx小于7eh则进行跳转到80740C0 妖城在线论坛' t# C, M' \" ]* j. O' t/ L9 ^
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" @, y& [( E9 Y& o
Push       ecx
  N/ F) a4 u  `( W2 v& [4 F5 k魔力私服,最新魔力宝贝私服技术交流Mov        ecx,7
: `+ z  H7 M2 ~4 j- o& g9 _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表给ecx赋值7
# i1 n" i! o* q7 S魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表魔力私服,最新魔力宝贝私服技术交流1 f! |3 Y5 e5 f) @3 h& G: w
Push              edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# }4 `1 }$ k4 j  o3 ]) C
Mov        eax,edx
3 m5 E) U$ A( ^# i; C$ X妖城在线论坛把当前等级+1的值给eax
6 t9 U5 L2 ^+ v魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ h. x) v0 p4 V* \) C, k/ ?
Imul              eax,edx 妖城在线论坛/ A9 t% V" Q* S/ P
把eax与edx相乘,结果存在eax 魔力私服,最新魔力宝贝私服技术交流, v6 P1 a( _3 B# }% X

; }) U% Z3 s0 m1 _% f4 c2 H妖城在线论坛Imul              eax,ecx
) G1 f1 K! W& _2 v魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表把eax与ecx相乘,结果存在eax
* E& J# s# |7 J  X/ a魔力私服,最新魔力宝贝私服技术交流
; L$ h1 v  |/ t) U5 Y" I) w魔力私服,最新魔力宝贝私服技术交流Leave
" n* u4 y9 |) ]6 a2 u& |. ]bbs.mocwww.comRetn   E8 q) v+ l4 U6 [& e
退出这个过程吧,大概 魔力私服,最新魔力宝贝私服技术交流* e7 Z& O$ y! i- G9 i

* q0 s- Z$ J) W$ l" _" Z5 p* \Mov        eax,dwordptrLevelUPtbl[edx*4]
# S$ a$ k: @# d3 J$ b6 Q2 r—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这里是读取经验表的内容给eax,也就是查表读经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 S2 U9 a) d! g9 p( @

& G/ T( W1 k  L1 yjmp     short loc_80740B6 魔力私服,最新魔力宝贝私服技术交流0 }2 G( R- I* }9 W- P
强制跳转到80740B6 妖城在线论坛6 y# d6 g/ \6 b6 O- Y! n+ U
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' f& Y$ ~; ?0 v+ E0 [2 }1 `
好了,这段代码就这点意思,逻辑上不难理解。 # E" g! t  E) R' ^
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
" x) N% r8 w# \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
+ [) W3 ?8 g0 N' Q- d1 Z! a5 F& M1 P妖城在线论坛分析完了之后开始修改了,上面的代码具体作用如下:
# s; Y, l5 W: X* Y- Y妖城在线论坛判断等级下一级是否小于7eh,是则跳转到查表。
3 k+ D! S5 j- Y, z1 ?妖城在线论坛否的话也就是大于7eh时,按照下面算法运算
  C% B7 v$ T6 S. B1 A.text:080740A3                 push    ecx 魔力私服,最新魔力宝贝私服技术交流8 f& Q# ~; J: q  ^% b: L. O/ U4 X
.text:080740A4                 mov     ecx, 7 ' U0 ~, X# V1 v3 J$ z
.text:080740A9                 push    edx
( t( ^8 A5 [3 T! Z+ y1 a—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AA                 mov     eax, edx 妖城在线论坛2 i/ i  [- E: T1 E) W, {0 h- q7 e4 ^
.text:080740AC                 imul    eax, edx ; v* A2 W3 c9 e. i7 P8 }
.text:080740AF                 imul    eax, edx : |0 G* F0 Y9 n
.text:080740B2                 imul    eax, ecx
. s* q3 U) \8 T, j- N! e: a也就是eax的三次方乘以ecx,这里可以改成我想要的。 4 U6 h& @2 v/ m% A9 k  h

  x/ T3 A" {4 xbbs.mocwww.com我的目标是改称等级的四次方除以50,但是问题来了。 魔力私服,最新魔力宝贝私服技术交流8 v. m$ d9 ]& h: c* r9 b
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
1 O( Q3 [. S8 S—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
: P) f1 @( C: B* ~.text:08074098                 public CHAR_GetLevelExp , Z7 ~) C% w* z
.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力宝贝私服技术交流$ R! r6 a. ?  z
.text:08074098               妖城在线论坛! F4 y. h2 u# `, a* c' o" i$ p
.text:08074098                 push    ebp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% C. {; ?% _" t  e, G3 ]
.text:08074099                 mov     ebp, esp
0 J1 ?2 [" h5 h+ D魔力私服,最新魔力宝贝私服技术交流.text:0807409B                 mov     edx, [ebp+8]
( t! h% a) v5 ^  ~8 e1 I2 @; E. f魔力私服,最新魔力宝贝私服技术交流.text:0807409E                 cmp     edx, 0FFh
1 z) U2 C# P/ A: w- G: \.text:080740A4                 jg      short loc_80740C0
* p' A" M2 V. G5 d8 v3 V7 Lbbs.mocwww.com.text:080740A6                 push    ecx . j! L7 M( e$ e
.text:080740A7                 mov     ecx, 32h —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 Z9 h, [& ]. Z
.text:080740AC                 push    edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 U4 j) }# |' t& V7 l$ N2 \
.text:080740AD                 mov     eax, edx
  A/ g: [& l8 @9 S—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AF                 imul    eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 j* l+ R( S! g9 [) r( ^. C6 w& [
.text:080740B2                 imul    eax, edx
$ Z3 P1 ^/ r6 z. V& U.text:080740B5                 cdq
, w, O9 s2 m$ |.text:080740B6                 idiv    ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, y" K  D8 i) k8 `+ `5 k
.text:080740B8                 mov     edx, [ebp+8]
9 S, E) w. T  Q: o1 f3 m' X.text:080740BB                 imul    eax, edx 妖城在线论坛" i! S) |2 ^+ P1 O8 R
.text:080740BE
8 ^, T: b% ~/ o% R! I; I.text:080740BE locret_80740BE:                     
8 E( f$ v. l( y4 P6 E" c妖城在线论坛.text:080740BE                 leave 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 q7 p2 A4 T& m, N9 S
.text:080740BF                 retn
) p& T. O; Q9 m" U魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0:                         bbs.mocwww.com# a) ~+ D9 f6 I$ L
.text:080740C0                 mov     eax, 0FFFFFFFFh 魔力私服,最新魔力宝贝私服技术交流% V2 Q5 b' E& p( n% h
.text:080740C5                 jmp     short locret_80740BE bbs.mocwww.com7 t" j* `% }& p3 q3 `
魔力私服,最新魔力宝贝私服技术交流" @& X2 ~4 }* n' Z4 g
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
8 V7 t, l, W0 r. c—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートCmp              edx,0FFh 5 f+ a; S9 I3 L3 H  M+ `/ l
Jg           shortloc_8074C0
! S7 ^4 ?. r! ?bbs.mocwww.com判断等级是否大于255是的话跳转80740C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% V1 B: o' u# O2 i9 O
否的话进入我们的等级公式:
- X+ b! I- L" W0 A/ tbbs.mocwww.com(等级*等级*等级除以50)*等级 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 [3 Q7 x, p1 x1 z8 B
也就是等级三次方除以50再乘以等级 魔力私服,最新魔力宝贝私服技术交流" P5 {) [- [: A  U
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 ) p5 k) C1 b7 n$ A+ g. s# @) o! Z9 j
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
1 ^( g1 n) X( |! g/ P魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
  k4 o+ E, G2 I! O9 l$ ^魔力私服,最新魔力宝贝私服技术交流妖城在线论坛' N  n6 j7 [) V# |/ r( u5 y; L
接下去做公式: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表  t0 Q* o8 r# |. j- A
Push              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# ]: ^& M1 m  x7 o
Mov        eax,edx      将下一等级的值赋值给eax
! a/ }6 w% S2 S- ]0 j% O! H4 Z妖城在线论坛Imul              eax,edx          将eax,edx相乘,结果存到eax
3 g/ M3 X6 j; L—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul              eax,edx          同上
- C% h+ W! G) c" U* T妖城在线论坛Cdq                             这个做除法不加就会出错,用户登录后服务器当机
0 ~& S/ o4 U7 g/ a& D/ W7 a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Idiv        ecx                eax除以32h算到50倍经验
. D5 V8 Y8 J% f" _) u& s' q魔力私服,最新魔力宝贝私服技术交流Mov        edx,[ebp+8]    从新获取下一等级的值 魔力私服,最新魔力宝贝私服技术交流4 |, F6 ]; P! n4 R* @8 _5 J9 o' f
Imul              eax,edx          将eax,edx相乘,结果存到eax 0 @0 P( J: S& |5 ~+ r+ F

2 a9 o; Z5 @5 j. d6 |, B' m妖城在线论坛好了,这样就完成了运算过程。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# h0 V5 x& F$ S3 b

: p4 k" b4 K  P4 Q* U6 T9 vbbs.mocwww.com.text:080740C0 loc_80740C0:                         —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; [# o$ H% E1 T2 K! O
mov     eax, 0FFFFFFFFh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* V5 n7 x! f* M- Z! J) u6 q
jmp     short locret_80740BE
. W9 {$ ~4 ]. k, n0 c妖城在线论坛这一段代码就是等级超过你设置的上限之后返回-1。
* j6 b: y, a( Ibbs.mocwww.com! A9 U% ?' }4 b% ~. A' P. n

' h; I  F5 U. `7 x2 S6 Ebbs.mocwww.com下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 魔力私服,最新魔力宝贝私服技术交流7 \4 @, D) w1 \/ k& d
这里就要用到FlexHex了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( [  _* t, k% C, @3 i, }/ n  e/ d- b

, F3 U* g3 T) i) [+ B, o2 K8 ~* |妖城在线论坛首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 妖城在线论坛* T( B- a9 ]) h. L/ R4 s1 k
如下对应:
; L; p! L- }( y& [3 p3 w% U魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp              edx,0ffh                       81  FA  FF  00  00  00
7 N, b$ A" [4 ^9 q" b( F0 hjg      short loc_80740C0         71  FA
% p! e) Z, b: |$ P7 ]' K2 w# D妖城在线论坛mov     ecx, 32h                      B9  32  00  00  00
0 r/ z5 n* F5 p" U* z0 C0 `" E* Jbbs.mocwww.com
7 W6 L( h* w3 z" j5 a) V魔力私服,最新魔力宝贝私服技术交流依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
" A# U6 M5 G% B妖城在线论坛这个挺有乐趣可以自己慢慢享受摸索。 魔力私服,最新魔力宝贝私服技术交流* ]  n, r2 F8 K7 l9 S
bbs.mocwww.com/ D1 G+ X/ u+ P* m: Y2 A) K
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

好文章, 可以帮很多入门的来修改~

TOP

看不懂.............

TOP

学习学习
. I# g& U* x4 Q: t; B6 u/ k/ g* ^—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート谢谢楼主分享经验

TOP

感谢楼主分享,顶!

TOP

很不错~呵呵~ 继续深入,到call语句的调整和为自己的语句腾空间还有搜索无果而必须自己对着opcodes写机器码就有趣了……

TOP

发新话题