没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
; \# E" a# i4 i& x/ l魔力私服,最新魔力宝贝私服技术交流使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 魔力私服,最新魔力宝贝私服技术交流* g* |9 Y0 F. c. T, C4 p$ f5 f
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 T& Y0 a0 }4 [' D" D$ {3 c
用IDA载入gmsv,分析完成后进入Exports选项卡。
" \( R# \# S* e搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
! h1 t% \) U0 k妖城在线论坛.text:08074098 public CHAR_GetLevelExp bbs.mocwww.com/ a) ]) z) j$ |# u0 G
.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, f$ e2 w9 L; c z9 _9 u+ l
.text:08074098 push ebp
% I* H& F; ~1 Y2 ^8 }9 |9 n魔力私服,最新魔力宝贝私服技术交流.text:08074099 mov ebp, esp
- _$ Y& b7 C9 E7 t: C& D8 g.text:0807409B mov edx, [ebp+8]
" t: Y% ^4 E8 k2 D- `1 l* Z, X# Fbbs.mocwww.com.text:0807409E cmp edx, 7Eh
4 w& Y/ h" \! Z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A1 jbe short loc_80740C0 bbs.mocwww.com( D# @6 ?. [2 g# |' o4 \) p
.text:080740A3 push ecx
* L" S5 B' n% D8 w. T9 V5 \魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A4 mov ecx, 7 / A# V- E' F4 N3 B& k3 r
.text:080740A9 push edx % J: o7 |) z, m- ?6 l/ ~
.text:080740AA mov eax, edx
3 f* }7 t$ m% P) C. @. G0 H- A8 c2 l- Abbs.mocwww.com.text:080740AC imul eax, edx 妖城在线论坛# i$ X+ ~1 R5 z9 b
.text:080740AF imul eax, edx
6 w" f; J) v6 u—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B2 imul eax, ecx
' D) z2 e R6 Fbbs.mocwww.com.text:080740B6 loc_80740B6:
% O1 ^: v/ z% k1 W& Z9 fbbs.mocwww.com.text:080740BE leave 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 v! |/ z5 L# I* l9 P" a! d
.text:080740BF retn 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 a3 A+ N0 C- u. u1 G
.text:080740C0 loc_80740C0: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; f# ^1 a. ^: F8 w( x
.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
* I: z. K; z' \, k+ `) `( P: a: ]魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C7 jmp short loc_80740B6 bbs.mocwww.com2 b) e- j: O3 U4 U, V' A# `
0 G: J! e6 @6 \5 q Y0 F0 |妖城在线论坛粗糙的解释下这段代码的意思 魔力私服,最新魔力宝贝私服技术交流) d* ?# h" Y0 ^. R6 v9 T0 Q
* @. |4 p6 v1 k, M, `: C魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Push edp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ {2 P8 Z% e' r( ~( m" S
Mov ebp,esp % m: V7 ]! I2 [+ m; j% u
Mov edx,[ebp+8] bbs.mocwww.com. {8 A3 m1 R. ^
获取当前等级的下一级存到edx
( L3 R% P7 ]4 H f
5 h4 b. p1 `/ Rbbs.mocwww.comCmp edx,7eh
) ?, l. k) Z& v- ^魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表将edx与7eh也就是10进制数130比较 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 ~# e" n1 W9 _% ~5 { f8 L2 U
) b3 S. b! D) \, a5 e Pbbs.mocwww.comJbe shortloc_80740C0 妖城在线论坛$ U. U1 G6 o0 s) ~. \) v! N) d
如果edx小于7eh则进行跳转到80740C0 魔力私服,最新魔力宝贝私服技术交流' T5 U/ O3 d/ y+ ^
- N7 P7 r+ t0 _5 K% dbbs.mocwww.comPush ecx
7 Q8 p: X3 v* o! ?, t魔力私服,最新魔力宝贝私服技术交流Mov ecx,7 bbs.mocwww.com$ X, L7 K( ^4 Z% t
给ecx赋值7
+ t: C9 Z; U* i! j—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートbbs.mocwww.com, f+ U4 G; m1 \/ O2 R9 T
Push edx 魔力私服,最新魔力宝贝私服技术交流9 k+ g, ?- n, Q- U" k$ F
Mov eax,edx 妖城在线论坛# z& i3 Y& v1 s
把当前等级+1的值给eax
; r& ]; D- V' y$ p3 Z. h4 w3 ^' U9 l
" k/ v) ^& l, O) U' Y* n. `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx 魔力私服,最新魔力宝贝私服技术交流- _, [# r2 R2 ^
把eax与edx相乘,结果存在eax
( ]! u% u. o- k; ^) Y" A- G& Q) B—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- k$ [9 z5 l+ v3 i- v* V8 a; H2 w" G( L
Imul eax,ecx
( C- \' w4 S" c4 ]1 v7 V s& ]—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート把eax与ecx相乘,结果存在eax 魔力私服,最新魔力宝贝私服技术交流" F( Q7 E; } e6 [
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 I( ^# o+ m1 K4 O
Leave bbs.mocwww.com4 O! u2 P8 |' E9 Z# q% K
Retn —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% h* o, s% m6 ]3 r' q6 R
退出这个过程吧,大概
% n# c- i3 Y2 ~% J% J7 Z魔力私服,最新魔力宝贝私服技术交流! |* s ]/ c7 w. V/ _% A
Mov eax,dwordptrLevelUPtbl[edx*4]
0 ^) y/ ?6 g3 ?8 h2 `: M这里是读取经验表的内容给eax,也就是查表读经验 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: S6 ^" h! V! k
魔力私服,最新魔力宝贝私服技术交流% S4 t8 ]7 F3 C1 n
jmp short loc_80740B6 bbs.mocwww.com6 N0 K1 W. s' J
强制跳转到80740B6 ' g1 U! y+ u2 V9 n6 n
5 @9 k2 e7 Q3 c3 g好了,这段代码就这点意思,逻辑上不难理解。 bbs.mocwww.com% s9 {( X$ a8 E4 |: h* g9 X/ E- I
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" g6 B9 B; O5 z% q6 s
bbs.mocwww.com9 i. O( c1 w7 v4 e( n
分析完了之后开始修改了,上面的代码具体作用如下: 魔力私服,最新魔力宝贝私服技术交流) J& {, w5 A" Z- X
判断等级下一级是否小于7eh,是则跳转到查表。
9 i* q9 x" T. }8 }, i8 N' H+ G# B妖城在线论坛否的话也就是大于7eh时,按照下面算法运算 . {2 g- W; v0 C
.text:080740A3 push ecx
2 \* i3 K0 I* o$ _9 l: D3 D( c魔力私服,最新魔力宝贝私服技术交流.text:080740A4 mov ecx, 7 魔力私服,最新魔力宝贝私服技术交流2 y) k" i2 d9 W8 O( {7 o
.text:080740A9 push edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" W1 H9 K+ B- \9 b8 Y+ G7 n
.text:080740AA mov eax, edx 妖城在线论坛 s/ ?, J( I( Y4 A5 d
.text:080740AC imul eax, edx
1 ] [* x! A6 r1 o9 p t$ K6 Q0 ?妖城在线论坛.text:080740AF imul eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 Y- H+ w3 F9 A2 O
.text:080740B2 imul eax, ecx
& d) Z1 V3 E/ J/ d4 \妖城在线论坛也就是eax的三次方乘以ecx,这里可以改成我想要的。 . k5 ~$ e1 v8 C9 L' M' b' x/ r# n
% f6 Z3 l B* \3 L3 x6 H7 o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート我的目标是改称等级的四次方除以50,但是问题来了。 bbs.mocwww.com1 l o; [4 Z0 K m4 f# f7 `" y
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
3 t" d& l) f; b* J1 V& |6 Hbbs.mocwww.com魔力私服,最新魔力宝贝私服技术交流# ~9 S1 j; k# @6 ]" s" R- k% i
.text:08074098 public CHAR_GetLevelExp
6 Q$ Y3 q6 z, z2 i! S) B—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力宝贝私服技术交流8 [; r/ s4 V- |6 _# H
.text:08074098
4 Q. I$ R/ Z6 l! [1 A1 V4 g( S—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 push ebp 妖城在线论坛, f5 P$ q' f c+ x+ T3 ?
.text:08074099 mov ebp, esp
) W; `: h; R9 Y# T* l' C—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409B mov edx, [ebp+8] 魔力私服,最新魔力宝贝私服技术交流3 p1 F( W. V$ p4 |0 A* {! V* b2 i! _
.text:0807409E cmp edx, 0FFh
( I6 A! X# b( Q$ t9 r- s1 k u7 Y! h妖城在线论坛.text:080740A4 jg short loc_80740C0 0 G& n$ s. `- ]( v% F( s7 _
.text:080740A6 push ecx 妖城在线论坛6 a& W. l+ @# V6 I
.text:080740A7 mov ecx, 32h
. }9 H% Y! x" ebbs.mocwww.com.text:080740AC push edx bbs.mocwww.com1 o* i# e5 M: U
.text:080740AD mov eax, edx 妖城在线论坛' X4 w3 T6 N1 P7 Y# }
.text:080740AF imul eax, edx
) B# O* J |, f$ ]* K.text:080740B2 imul eax, edx
t6 C5 O Y+ g5 T5 S魔力私服,最新魔力宝贝私服技术交流.text:080740B5 cdq
5 h" { {/ X8 i9 q7 w* @.text:080740B6 idiv ecx : k, E# r8 w; N
.text:080740B8 mov edx, [ebp+8]
" B9 X8 c |2 K7 ]7 n& I2 C* N' w魔力私服,最新魔力宝贝私服技术交流.text:080740BB imul eax, edx
% u) `8 Y1 V, U; p魔力私服,最新魔力宝贝私服技术交流.text:080740BE —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* o# d q( g! s0 @
.text:080740BE locret_80740BE: 妖城在线论坛* C- C% }" G* j+ E$ z3 }$ m4 g
.text:080740BE leave 魔力私服,最新魔力宝贝私服技术交流: X- {/ J' h2 w' f" X, ^- O
.text:080740BF retn —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 ^) V. n! J/ o8 {2 I; {. ?- M6 \
.text:080740C0 loc_80740C0:
5 y6 J8 G" z; B c1 K# v% x妖城在线论坛.text:080740C0 mov eax, 0FFFFFFFFh —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 G" E6 X# A; E
.text:080740C5 jmp short locret_80740BE
3 [% o; K# O! W" K# T2 G' M {魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
7 R) ^0 I+ M: ^1 a: u—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート方便起见这里直接把我改好的代码贴出来,与原来不同的地方: 妖城在线论坛" e! W0 ] z$ J& V H
Cmp edx,0FFh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% ?7 P8 q9 i" K8 {
Jg shortloc_8074C0
$ c' ]# w, r3 A( C9 b' f' ^bbs.mocwww.com判断等级是否大于255是的话跳转80740C0 " d" [# W9 w1 r0 d3 F
否的话进入我们的等级公式:
* \- {4 l. }# ^—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート(等级*等级*等级除以50)*等级 bbs.mocwww.com6 W p( s. V! ?
也就是等级三次方除以50再乘以等级
- m" d) K2 Q. D+ O3 D. R+ r$ u妖城在线论坛为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 魔力私服,最新魔力宝贝私服技术交流) L* B; B% A4 w' G' q8 ?2 l8 @
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: K8 Y3 D- p: i8 m
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 魔力私服,最新魔力宝贝私服技术交流8 r& {/ J# `) Y5 W8 m9 B6 r2 p
# i) T3 f \& ubbs.mocwww.com接下去做公式: 妖城在线论坛8 F$ B. j' d) b, T
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验 妖城在线论坛8 C7 L: B5 P6 W! E' {$ S/ E' B: \: z
Mov eax,edx 将下一等级的值赋值给eax 6 I8 N7 h) M2 E1 F- `# y$ u
Imul eax,edx 将eax,edx相乘,结果存到eax
+ z8 F8 z( ^/ U2 S* w" JImul eax,edx 同上 bbs.mocwww.com# C- d- G4 H" T! }& v
Cdq 这个做除法不加就会出错,用户登录后服务器当机 妖城在线论坛. X! ^8 A! X% F2 e
Idiv ecx eax除以32h算到50倍经验 妖城在线论坛2 _- L1 ^; a- `0 T/ m; W
Mov edx,[ebp+8] 从新获取下一等级的值
8 Z3 Z/ e7 D' W, ?; rbbs.mocwww.comImul eax,edx 将eax,edx相乘,结果存到eax
a/ x& G0 B* ^4 b- [魔力私服,最新魔力宝贝私服技术交流- A$ t4 l8 \% m6 i. Q
好了,这样就完成了运算过程。 魔力私服,最新魔力宝贝私服技术交流0 z+ W9 i+ @, r* c" c8 q
6 J2 t1 R) J8 v$ }3 [: p+ d.text:080740C0 loc_80740C0:
, e! Q: X6 R) S. `/ X- v1 F6 a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表mov eax, 0FFFFFFFFh
& V$ {; f; k2 _2 \- H' L( I, R R—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjmp short locret_80740BE
& i% G5 R" d. i% x6 S; Q9 b这一段代码就是等级超过你设置的上限之后返回-1。
2 i4 ]# G5 M% j7 a5 v0 _bbs.mocwww.com% A1 ?1 ~9 y# Z5 E2 K# C; W
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 H) X: k. I) G. S
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
, m, V7 `5 ?* C5 K妖城在线论坛这里就要用到FlexHex了。
: h4 l, @/ z: ~! h5 _. u妖城在线论坛—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 q! U+ I! }* O# Q+ D% A
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& {" h7 K9 F1 ]" Y6 @2 v$ H3 J
如下对应:
a. x1 n5 B H* x—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートCmp edx,0ffh 81 FA FF 00 00 00 8 [( l/ o7 P; u+ {" K" Y
jg short loc_80740C0 71 FA 妖城在线论坛; G/ d" i* W7 j" [: y
mov ecx, 32h B9 32 00 00 00 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート3 p- E' C; X" B9 T& x/ k! H
/ W: J7 _- n9 I( F依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
3 j0 O" D$ ~/ ~, T# _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表这个挺有乐趣可以自己慢慢享受摸索。
/ R8 O A, M/ O; f( k7 j妖城在线论坛
" T- }2 v E* X9 a8 L6 W. c以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。