发新话题
打印

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

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

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 bbs.mocwww.com2 p8 d! Q+ T* y4 U8 ~: ?8 G
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 bbs.mocwww.com) \7 y5 e9 |3 \2 Y- ?% \+ \. x5 _
魔力私服,最新魔力宝贝私服技术交流, k9 y6 I2 X9 O9 {+ X0 @
用IDA载入gmsv,分析完成后进入Exports选项卡。 bbs.mocwww.com0 v$ T8 r9 n# R( N) R! v
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 妖城在线论坛+ m8 h; p) ?% c
.text:08074098                 public CHAR_GetLevelExp
0 C/ `0 w7 _% A( Q0 C& ]( o.text:08074098 CHAR_GetLevelExp:
: d# r- u, N- c, H& X% t妖城在线论坛.text:08074098                 push    ebp 魔力私服,最新魔力宝贝私服技术交流; u2 G+ W% j  c3 {/ ~! Q3 J9 E
.text:08074099                 mov     ebp, esp
8 `3 Z7 r: v: t6 g& Z! _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:0807409B                 mov     edx, [ebp+8]
* {" V7 Q0 ]$ J2 b" Y. A魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:0807409E                 cmp     edx, 7Eh
0 U2 W! N* Z, |* s% u8 P6 x4 `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A1                 jbe     short loc_80740C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: l$ E4 T8 Z* C' C4 c
.text:080740A3                 push    ecx
2 `* I! G, i0 T) z/ }3 B.text:080740A4                 mov     ecx, 7 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 g0 G! `- r% R5 @5 O
.text:080740A9                 push    edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 ~8 V; I0 F% W8 A
.text:080740AA                 mov     eax, edx
' J8 _3 B2 M; l+ D3 z.text:080740AC                 imul    eax, edx
" H1 k; B) v1 gbbs.mocwww.com.text:080740AF                 imul    eax, edx
$ W7 K7 m. k; H, }魔力私服,最新魔力宝贝私服技术交流.text:080740B2                 imul    eax, ecx 妖城在线论坛! A4 Z1 }' E" }3 A( p
.text:080740B6 loc_80740B6:   
  @& q, u1 t- k) S! @( g  z/ V6 ubbs.mocwww.com.text:080740BE                 leave , e/ n2 F  R) c5 `; ]$ k/ c: x0 r* x8 r
.text:080740BF                 retn bbs.mocwww.com/ w3 s7 f: Q3 X( M2 @6 o+ F* J: J
.text:080740C0 loc_80740C0:                           bbs.mocwww.com+ D$ u  g- @: u1 X) u4 V( q
.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4] 妖城在线论坛+ Z- D; \8 H1 B
.text:080740C7                 jmp     short loc_80740B6
6 s" Z2 a( n. ?  Z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) k/ ?! n, e3 \+ k* Y  U7 z
粗糙的解释下这段代码的意思
4 V6 `; p" P6 B" P3 }0 X8 l4 l4 N  `魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: G2 W5 p- S/ {: P2 L5 i9 S& g
Push              edp bbs.mocwww.com% g0 d: F6 n; w* j; }7 P
Mov        ebp,esp 魔力私服,最新魔力宝贝私服技术交流8 I& l) T; `" X) Z; y
Mov        edx,[ebp+8] 妖城在线论坛) q+ L" V& \2 Q% U5 Y9 ^
获取当前等级的下一级存到edx
! ?' O$ y6 Z  W/ E; o" Tbbs.mocwww.com
8 r. v2 f# \; l" _5 G8 N5 N+ z4 Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp              edx,7eh
2 V. b& T5 s1 H2 G妖城在线论坛将edx与7eh也就是10进制数130比较 : \5 ]9 ~- y6 \5 z+ V! G2 C; ]

0 T  j& b/ |* BJbe         shortloc_80740C0 7 }7 I9 M1 C) _- w8 E
如果edx小于7eh则进行跳转到80740C0
! C! {! G) s" [+ C: ^$ w- i妖城在线论坛
/ N( H$ ]# b0 f魔力私服,最新魔力宝贝私服技术交流Push       ecx
4 n) j& L1 r& JMov        ecx,7
6 K' ?7 Q: d/ c* z给ecx赋值7 3 \7 p% E& }) I1 R7 d

6 A) U0 X. G7 F9 U) p魔力私服,最新魔力宝贝私服技术交流Push              edx
! w3 a3 I) ]4 V  |% y( v妖城在线论坛Mov        eax,edx 魔力私服,最新魔力宝贝私服技术交流0 p$ E' o0 m" \4 K- m* p* W
把当前等级+1的值给eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 n4 Y$ c- D! }$ S1 m$ a  d
妖城在线论坛7 e0 e+ ~) m$ }& ^9 e
Imul              eax,edx
( H/ @' t( ^" T& M! \( r3 C把eax与edx相乘,结果存在eax ! r! D; y+ y3 Q2 h

0 C/ d% u7 k' Xbbs.mocwww.comImul              eax,ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; V1 [5 H+ G- j6 Z) t
把eax与ecx相乘,结果存在eax 妖城在线论坛/ P" u' M$ I0 T7 j) r& Y+ |3 Z
bbs.mocwww.com& ?1 G' S+ ^* @  J) ~
Leave 2 b& l8 |) y+ L# l' B
Retn 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- K2 `/ P- C: y
退出这个过程吧,大概
" R. N6 @/ G% f% n& q( \; A- \魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力宝贝私服技术交流) C" [. ]: A' U% a
Mov        eax,dwordptrLevelUPtbl[edx*4]
0 U; j% V* z, Y. K* y  ?—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这里是读取经验表的内容给eax,也就是查表读经验
& t  e& S4 I% f, L
$ Y6 r$ k& Z. |' ^; ~+ fjmp     short loc_80740B6 妖城在线论坛2 Z* `9 c0 b/ }/ d
强制跳转到80740B6
. T" y# R" f8 T* @2 w9 i0 Y
2 B8 a/ r  T- s+ A  i5 s  I魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表好了,这段代码就这点意思,逻辑上不难理解。
2 h/ p! n) C5 ?1 l' ?( m+ D, J. Q; f" gbbs.mocwww.com虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. C, ^+ r4 n# `  v% j
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& H* l# W+ `; M
分析完了之后开始修改了,上面的代码具体作用如下:
- E0 r8 B, m1 R/ ^2 J魔力私服,最新魔力宝贝私服技术交流判断等级下一级是否小于7eh,是则跳转到查表。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 Y6 y( l- o7 D* ~1 N/ L& {
否的话也就是大于7eh时,按照下面算法运算 妖城在线论坛# [, T2 Q- R1 U( B3 R' M/ P
.text:080740A3                 push    ecx 7 f3 |2 C, x% ~) e3 p# H: `
.text:080740A4                 mov     ecx, 7 bbs.mocwww.com* E& w/ o& ~& L0 \* ^! p2 i7 K
.text:080740A9                 push    edx
$ h2 P$ j  k4 _% `妖城在线论坛.text:080740AA                 mov     eax, edx 魔力私服,最新魔力宝贝私服技术交流0 f) y4 r8 F  o7 F/ U- G( C3 O
.text:080740AC                 imul    eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; Z+ o" _0 u; z! d9 P. U/ J. v) [
.text:080740AF                 imul    eax, edx
& u2 P5 m% K/ H# S- Q1 @% N! L1 {( W.text:080740B2                 imul    eax, ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 L$ M# V  _. B3 ^! K
也就是eax的三次方乘以ecx,这里可以改成我想要的。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) d! B, z# @# H. r; h
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" ?) M9 ]0 E: @0 W$ ?/ d3 ]6 G1 ~
我的目标是改称等级的四次方除以50,但是问题来了。
! N  M4 _7 @- ~7 Q0 M—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' _/ {8 s7 J; s  a) N1 W7 z
妖城在线论坛+ k2 j  @: Y, O# }! p
.text:08074098                 public CHAR_GetLevelExp bbs.mocwww.com' X0 _% s4 \1 z# k& R0 R& c
.text:08074098 CHAR_GetLevelExp: 妖城在线论坛' m% y8 i8 \( J8 I% q) @
.text:08074098               
) X2 w3 N6 {: J$ W1 y( [1 v1 C; l.text:08074098                 push    ebp
/ S" ]1 V4 H$ n* [6 u魔力私服,最新魔力宝贝私服技术交流.text:08074099                 mov     ebp, esp
$ T) Y2 F+ @, a/ A6 q+ q魔力私服,最新魔力宝贝私服技术交流.text:0807409B                 mov     edx, [ebp+8] 魔力私服,最新魔力宝贝私服技术交流2 }$ m# m9 T, @+ w- w
.text:0807409E                 cmp     edx, 0FFh 妖城在线论坛/ E6 s, K0 D; u7 E& C
.text:080740A4                 jg      short loc_80740C0
- \5 ~' k8 \' K; |2 R* r.text:080740A6                 push    ecx
3 g$ [6 I3 `1 U2 f( s  v—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A7                 mov     ecx, 32h 妖城在线论坛8 A: A7 B5 r0 W2 w2 I5 N5 o; Q
.text:080740AC                 push    edx
6 @; ~) V1 [1 b+ p0 L魔力私服,最新魔力宝贝私服技术交流.text:080740AD                 mov     eax, edx
! H4 e- C( i/ f.text:080740AF                 imul    eax, edx - J6 r4 U3 B8 q  `, b
.text:080740B2                 imul    eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& P+ b8 S, V# u( I1 @* _
.text:080740B5                 cdq bbs.mocwww.com5 M' J4 L; k& ^! e. M
.text:080740B6                 idiv    ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 J* b) K' O0 f9 D9 {8 n
.text:080740B8                 mov     edx, [ebp+8] 2 |8 y' p% V+ u" Z, S
.text:080740BB                 imul    eax, edx
4 f+ y2 p" r( B. N7 m5 E妖城在线论坛.text:080740BE
- t( S( h8 P0 {6 w' _# Q* m魔力私服,最新魔力宝贝私服技术交流.text:080740BE locret_80740BE:                     
. l. t) ]& q4 W" Z7 f.text:080740BE                 leave 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% X: [7 j$ `# m" p4 h3 `2 ~9 u1 |
.text:080740BF                 retn
' G* L' R4 H8 j& L! X: l! ^妖城在线论坛.text:080740C0 loc_80740C0:                        
9 ?+ ]) o7 l. _魔力私服,最新魔力宝贝私服技术交流.text:080740C0                 mov     eax, 0FFFFFFFFh bbs.mocwww.com2 ?2 j- x- u( T9 M1 i
.text:080740C5                 jmp     short locret_80740BE
' [2 k1 ?. A- V* S. a. q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; z& T/ z% x% L( H4 w5 r! K
方便起见这里直接把我改好的代码贴出来,与原来不同的地方: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# |2 C& z$ _7 g! Z6 h3 O
Cmp              edx,0FFh
/ q) k+ B6 Y  U3 Y妖城在线论坛Jg           shortloc_8074C0 bbs.mocwww.com, p5 v0 s' M* B0 p
判断等级是否大于255是的话跳转80740C0 妖城在线论坛$ m) L$ c$ K3 y
否的话进入我们的等级公式:
: @- f2 [9 z' R2 e5 ~魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表(等级*等级*等级除以50)*等级 bbs.mocwww.com& [: g* m5 G7 O0 e
也就是等级三次方除以50再乘以等级
. F& \1 h' N: }魔力私服,最新魔力宝贝私服技术交流为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 P2 ~' m* P; H
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
6 Y. I: @! h: v  z所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 魔力私服,最新魔力宝贝私服技术交流; M+ Y" x) K; H# y+ Y& b2 R% W. L

! b) s9 v- ^+ n魔力私服,最新魔力宝贝私服技术交流接下去做公式: bbs.mocwww.com& O( ?, Y* W0 l9 b; m) u# w$ x: L
Push              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验
6 V: }7 i* e1 Z* ]% ~6 n+ cbbs.mocwww.comMov        eax,edx      将下一等级的值赋值给eax
9 z- K. V: n, m* S# |妖城在线论坛Imul              eax,edx          将eax,edx相乘,结果存到eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 Z1 x, d' s) r* X/ V
Imul              eax,edx          同上 bbs.mocwww.com+ c: v- S7 {* m& a' g9 k
Cdq                             这个做除法不加就会出错,用户登录后服务器当机
+ U0 n# a8 n# r7 ~# y8 C! A妖城在线论坛Idiv        ecx                eax除以32h算到50倍经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( T* D" t6 f  v. n; `
Mov        edx,[ebp+8]    从新获取下一等级的值
5 R' q) P1 P2 Y& T" pImul              eax,edx          将eax,edx相乘,结果存到eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. B( Y0 Z5 F2 |

" b6 F3 [. U  V- b7 Q$ [魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表好了,这样就完成了运算过程。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ y# D7 d9 ^0 R9 [8 N, X
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% S* e" r' C7 `& ~
.text:080740C0 loc_80740C0:                         魔力私服,最新魔力宝贝私服技术交流2 S! N9 p/ W" L5 z) ]: T* V  {
mov     eax, 0FFFFFFFFh 魔力私服,最新魔力宝贝私服技术交流$ t1 ?$ e- P! r
jmp     short locret_80740BE
# u4 _: t1 }+ O) o6 x—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这一段代码就是等级超过你设置的上限之后返回-1。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; G0 N9 ^  a  Y: m
妖城在线论坛" W- n$ l  ]8 j& [" H
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 Z. a% Q4 Q% V7 }# X
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 魔力私服,最新魔力宝贝私服技术交流* j2 |% r( J: k: D1 ?, v' }
这里就要用到FlexHex了。
% H% V6 a- O+ f+ e! u, q( t妖城在线论坛
7 D: k& J( Y1 p% X+ X/ ^# Y2 ?魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 bbs.mocwww.com1 N7 y0 H' e: p- O) P: z
如下对应:
) H/ p7 `2 W2 M( ]$ V3 Z" R$ ~  yCmp              edx,0ffh                       81  FA  FF  00  00  00 * r# C5 E0 o5 V- E- F7 c# C
jg      short loc_80740C0         71  FA
1 ^. W$ t; N9 D0 e6 y+ }# Kbbs.mocwww.commov     ecx, 32h                      B9  32  00  00  00
, V8 e7 G) H2 a- [/ _& f妖城在线论坛
3 ^$ `+ |' Q1 ^  h魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
! a8 z  v+ f$ I( y0 |bbs.mocwww.com这个挺有乐趣可以自己慢慢享受摸索。 bbs.mocwww.com( d+ |$ _0 V- B; ^4 N3 X3 ^" h
: {( ^& V6 `& P6 f% F# M
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

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

TOP

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

TOP

学习学习
" g' T: B, @  ], u( J/ bbbs.mocwww.com谢谢楼主分享经验

TOP

感谢楼主分享,顶!

TOP

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

TOP

发新话题