发新话题
打印

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

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

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 bbs.mocwww.com/ U9 g, f& [  Q; [7 ^( f
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 妖城在线论坛9 E. c2 O: p2 u  e3 R" r

! M2 r6 w7 F7 N2 c# w5 U魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表用IDA载入gmsv,分析完成后进入Exports选项卡。 ( m7 ^# c( D  V% f% M1 d! d
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
. z8 u. r1 s- u—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098                 public CHAR_GetLevelExp
; p+ R3 H' j* Y! ]2 h5 W8 {0 D妖城在线论坛.text:08074098 CHAR_GetLevelExp:
- c" y( I5 o* V" S! G1 ]9 L; Xbbs.mocwww.com.text:08074098                 push    ebp 魔力私服,最新魔力宝贝私服技术交流3 H( e# @; I! a  T+ `% m
.text:08074099                 mov     ebp, esp
# M# ^: g6 t# D' ^) ^% A4 N魔力私服,最新魔力宝贝私服技术交流.text:0807409B                 mov     edx, [ebp+8] bbs.mocwww.com6 a2 j( c# [( N6 b  X# J6 f1 l: A
.text:0807409E                 cmp     edx, 7Eh 魔力私服,最新魔力宝贝私服技术交流0 o8 O& o) s# d3 k
.text:080740A1                 jbe     short loc_80740C0
! B0 y' h6 W9 C: U9 bbbs.mocwww.com.text:080740A3                 push    ecx
6 e% T* ]+ K" g* g" H, q魔力私服,最新魔力宝贝私服技术交流.text:080740A4                 mov     ecx, 7 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# d; I- Z5 j8 O: _. Z  q! }
.text:080740A9                 push    edx 魔力私服,最新魔力宝贝私服技术交流2 q( z& H; v! F7 @9 W2 v
.text:080740AA                 mov     eax, edx 7 B0 {4 l+ @0 N- s( e# L& ]  q/ [
.text:080740AC                 imul    eax, edx 8 U8 I6 ~; W. i
.text:080740AF                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: ]9 {# Q# M6 B, }. h8 F
.text:080740B2                 imul    eax, ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 X& H4 P/ I" J6 B, z! _8 B! B% E
.text:080740B6 loc_80740B6:   " ~! f+ y2 w) O0 s( f
.text:080740BE                 leave
0 b. t% t6 Y  ~' t' L魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BF                 retn 0 a, }3 g8 K* N9 H
.text:080740C0 loc_80740C0:                           bbs.mocwww.com0 ^/ R9 V! p4 x$ b
.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* z2 y3 D, ?$ R" v+ H
.text:080740C7                 jmp     short loc_80740B6
1 P5 _2 F( {1 c妖城在线论坛
  ~0 k3 s7 \3 T8 wbbs.mocwww.com粗糙的解释下这段代码的意思 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 z& {$ c1 }" w2 K

  n! ~+ J' d  b' {5 Y5 ~9 ^+ u; B9 I' X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush              edp
3 ]  b$ J' z* f& |Mov        ebp,esp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" m6 c7 j6 W# l+ F5 U2 l3 ]4 Y' H
Mov        edx,[ebp+8] 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" s7 G! h; `, [! {  p. ?- B- I. ]
获取当前等级的下一级存到edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! E( M: e' _, ?% G% [1 Z' {1 l

/ Z2 b" R3 e! K/ r& i: A( Bbbs.mocwww.comCmp              edx,7eh " h3 F! {( y% r, T" Y0 g
将edx与7eh也就是10进制数130比较 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# S8 i7 b2 J5 k4 \
魔力私服,最新魔力宝贝私服技术交流& w$ q/ j5 U, O* t* S7 Z+ ]
Jbe         shortloc_80740C0
2 t6 V, K' Z+ R魔力私服,最新魔力宝贝私服技术交流如果edx小于7eh则进行跳转到80740C0 魔力私服,最新魔力宝贝私服技术交流+ s7 ?# D. b4 D+ k& I1 m
魔力私服,最新魔力宝贝私服技术交流8 n3 L- J# x9 E4 |) ]2 w0 X+ J1 U
Push       ecx
7 r8 E) _/ A6 P, yMov        ecx,7 妖城在线论坛% r1 e, D' r3 E
给ecx赋值7
$ c/ R6 T1 L3 D+ V' M# G# c( [, _+ H& l—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートbbs.mocwww.com- S$ [  d% s8 e- A) X
Push              edx
! k/ o$ q) H* b9 _! D8 f—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov        eax,edx 妖城在线论坛- K! m1 j" H" C7 G
把当前等级+1的值给eax bbs.mocwww.com. O5 Q  i3 S# o$ t- j
魔力私服,最新魔力宝贝私服技术交流) l, Z% Q/ m! i: {% W  a3 }1 S2 A
Imul              eax,edx
1 O2 s# C* R. X( _; ~2 r7 x: r/ \妖城在线论坛把eax与edx相乘,结果存在eax
5 `$ p3 l' z4 J0 C0 S妖城在线论坛
4 P4 O& a* ^& @$ ?8 [+ |Imul              eax,ecx bbs.mocwww.com! M1 X$ A4 \3 u' w: h
把eax与ecx相乘,结果存在eax 妖城在线论坛4 y0 u" v& S2 u
9 |  e% ]& ?- @5 _7 I' n. Q. u6 `  f
Leave 魔力私服,最新魔力宝贝私服技术交流  s. B0 ?# I) h4 @0 x
Retn
) I4 V1 V2 }6 N% Cbbs.mocwww.com退出这个过程吧,大概 ( A7 R! ]7 n& d5 A

* o- F* V1 S: y% t6 J$ eMov        eax,dwordptrLevelUPtbl[edx*4] 魔力私服,最新魔力宝贝私服技术交流2 @+ u9 ^# V  f! Y/ }' Z
这里是读取经验表的内容给eax,也就是查表读经验
, k  v  S- a6 p4 Ybbs.mocwww.com
; Y: g2 Y" ^# W% G- l: ]bbs.mocwww.comjmp     short loc_80740B6
$ s9 D2 R; ?7 n: m) ?强制跳转到80740B6
! c5 E4 ?0 ]/ B% e: e( {6 f魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表  Q( C$ T1 }' t" b  R
好了,这段代码就这点意思,逻辑上不难理解。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; `' _' c/ B4 Y4 h$ e( v
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
3 x4 e. ]( _8 `4 {! Z; K妖城在线论坛) V: [( ^( k3 S
分析完了之后开始修改了,上面的代码具体作用如下: 魔力私服,最新魔力宝贝私服技术交流9 k# w7 H" |" W8 x) G' l
判断等级下一级是否小于7eh,是则跳转到查表。
$ g# Y. ~, g5 Q- r" [  Q# P魔力私服,最新魔力宝贝私服技术交流否的话也就是大于7eh时,按照下面算法运算
8 K( s$ y; r) dbbs.mocwww.com.text:080740A3                 push    ecx 魔力私服,最新魔力宝贝私服技术交流6 J+ {4 E! V2 n2 ?
.text:080740A4                 mov     ecx, 7
6 Z# U8 k$ G" u0 K% A5 A魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A9                 push    edx + X1 g8 f! U1 p' ^1 X$ ^/ _  W& `
.text:080740AA                 mov     eax, edx
$ [9 R9 p& Z& b& W妖城在线论坛.text:080740AC                 imul    eax, edx 妖城在线论坛& Y0 e: E4 v, h# I$ w8 c& c
.text:080740AF                 imul    eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- y) U2 [- i6 k
.text:080740B2                 imul    eax, ecx
' H& o7 l" S$ ^bbs.mocwww.com也就是eax的三次方乘以ecx,这里可以改成我想要的。
, y& L$ W3 Y3 }* v—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートbbs.mocwww.com: ]% |' B( \" \7 L% `; B
我的目标是改称等级的四次方除以50,但是问题来了。 bbs.mocwww.com1 v6 r) \( K$ }$ ~
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 ) W7 \, Y7 b1 a( U; z

% @+ ^4 h2 S) V% U.text:08074098                 public CHAR_GetLevelExp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート  J' y- J4 h( U: ]3 H  _
.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力宝贝私服技术交流. F! T. B4 w- ?" E8 U& G- A
.text:08074098               
# y; j5 K/ U' b, d—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098                 push    ebp
- K3 U, q9 }- o+ {; o' ]% h* Dbbs.mocwww.com.text:08074099                 mov     ebp, esp
4 c+ S3 O# e' G7 _5 C—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409B                 mov     edx, [ebp+8] 魔力私服,最新魔力宝贝私服技术交流/ @4 x" H7 s+ r' j0 @" w% K9 a
.text:0807409E                 cmp     edx, 0FFh
5 |5 o2 ~; d8 }8 o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A4                 jg      short loc_80740C0 妖城在线论坛) G. z# o0 r/ D8 D# V3 q! Q0 f8 J
.text:080740A6                 push    ecx
0 x, C+ |9 C3 r5 [1 I7 r—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A7                 mov     ecx, 32h 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ }( f2 N5 K& o  b2 }
.text:080740AC                 push    edx 9 d$ r9 D8 W! F7 d# u1 O$ H
.text:080740AD                 mov     eax, edx
: o8 [. z: k7 D; N- ~& O: ]  [魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740AF                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& V$ }' J/ [% S; n; A" V  ^
.text:080740B2                 imul    eax, edx 妖城在线论坛( W5 `- ]* f6 O: y; q( Y
.text:080740B5                 cdq " f0 Q1 n7 h/ Q" i
.text:080740B6                 idiv    ecx
: C4 v6 g' X0 p* w2 \" C; @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B8                 mov     edx, [ebp+8]
) s- P0 b5 r5 q% ?9 F' g.text:080740BB                 imul    eax, edx ; n) E& P3 J! d4 e6 r
.text:080740BE
% P6 h# g$ f. rbbs.mocwww.com.text:080740BE locret_80740BE:                     妖城在线论坛4 j+ [) w% [6 X$ t
.text:080740BE                 leave
2 k; Q4 n8 S& A7 r" g+ K.text:080740BF                 retn 妖城在线论坛& I! Q1 [) C" Q' k9 Q+ l( m; b8 t' B
.text:080740C0 loc_80740C0:                        
! u/ K. y; _& _2 P9 \魔力私服,最新魔力宝贝私服技术交流.text:080740C0                 mov     eax, 0FFFFFFFFh 妖城在线论坛- ]9 J4 N! v( D$ x7 y# C
.text:080740C5                 jmp     short locret_80740BE 妖城在线论坛# u* \( m4 ^6 B) P) q5 ]

( b; {' l1 m4 C7 _4 E1 I- Vbbs.mocwww.com方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
9 s4 O2 E$ F8 |3 F2 n+ _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp              edx,0FFh
. K4 `3 y0 d, oJg           shortloc_8074C0
- g6 ~' _% a, L% [. n妖城在线论坛判断等级是否大于255是的话跳转80740C0
. f, F: l% I6 g; ?& z妖城在线论坛否的话进入我们的等级公式: " p( j( U8 g! F$ l0 V; T
(等级*等级*等级除以50)*等级
5 \8 k3 Y! n* |2 q2 p0 Z. S—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート也就是等级三次方除以50再乘以等级 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 y' ^; k* F  R. P, y% C
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
) ]0 }7 S* L4 jbbs.mocwww.com216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
+ {' y' @+ s. r% n所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 魔力私服,最新魔力宝贝私服技术交流, W% i7 D1 V) {2 ~% X

. E+ a: \6 D  P: U$ ]0 G1 m接下去做公式:
% o7 Q8 b8 v4 {5 ~# c) E7 H+ UPush              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验
! t7 N# Q( C# dMov        eax,edx      将下一等级的值赋值给eax
0 y6 P0 h& Y3 R2 |* W+ n; B/ D& i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul              eax,edx          将eax,edx相乘,结果存到eax bbs.mocwww.com, ]1 j7 a7 P! U7 X  r- q
Imul              eax,edx          同上
) a* ?7 _$ u* y( R+ Y9 G( R" S" R—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートCdq                             这个做除法不加就会出错,用户登录后服务器当机
" {. d( _0 j% z8 X9 h5 l% V魔力私服,最新魔力宝贝私服技术交流Idiv        ecx                eax除以32h算到50倍经验
& X3 u+ v. D& f$ ?+ B. t—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov        edx,[ebp+8]    从新获取下一等级的值 妖城在线论坛2 g' F! F/ O9 S+ V
Imul              eax,edx          将eax,edx相乘,结果存到eax
# F; c( i4 D' a妖城在线论坛魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- x' B$ [1 u/ d1 `) h6 [# `
好了,这样就完成了运算过程。 妖城在线论坛! r6 q8 ^- s. B. m+ Q! C7 Q" L

) W0 \: [! L( p5 o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 loc_80740C0:                        
! l6 }! E0 T: Y; l& P6 S: M魔力私服,最新魔力宝贝私服技术交流mov     eax, 0FFFFFFFFh
% Y: T, X1 V$ V( Hbbs.mocwww.comjmp     short locret_80740BE 0 o$ [) D+ V9 V! V8 u$ W
这一段代码就是等级超过你设置的上限之后返回-1。
- R' C4 r" W& G$ T  ?
. o9 R2 }1 `4 q5 E, P. k妖城在线论坛魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表  ]: P: M' s- w/ Z) x  H
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
$ ~- U, m  f' p2 O& y3 p: ~, p& u妖城在线论坛这里就要用到FlexHex了。
  q- M% l9 g7 P9 D- @0 b# L( i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
. e1 ~+ _3 L& nbbs.mocwww.com首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
% }) @9 h" A. Z- a$ U6 }3 w0 \- \7 [bbs.mocwww.com如下对应: bbs.mocwww.com/ w2 m8 O/ X; P5 |: t/ V. g
Cmp              edx,0ffh                       81  FA  FF  00  00  00 6 q0 \6 x  ?+ O: m; Y
jg      short loc_80740C0         71  FA
1 o# H8 w/ C" n! x8 w2 @' B魔力私服,最新魔力宝贝私服技术交流mov     ecx, 32h                      B9  32  00  00  00
8 I: }5 }4 e) `4 p9 q! @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
. F. V( b/ A6 \/ L3 b1 m2 Hbbs.mocwww.com依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
/ `8 B/ x, w1 r; Q/ X% ~& e- Qbbs.mocwww.com这个挺有乐趣可以自己慢慢享受摸索。
" s! K( D! }8 d! S6 p  p; Z. Y) X妖城在线论坛
/ d3 t9 [, x2 I; v9 F—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

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

TOP

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

TOP

学习学习—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, \/ H4 J- x: U8 \* O1 a
谢谢楼主分享经验

TOP

感谢楼主分享,顶!

TOP

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

TOP

发新话题