没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
5 M+ O( C7 N" x, m8 Y$ ]4 }; ^. \使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
) Z7 o$ S/ A( @7 Z" G% W: v8 r魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表妖城在线论坛# h, D9 a! K" o; A! Z: r
用IDA载入gmsv,分析完成后进入Exports选项卡。 " E: j4 @0 n2 X9 E0 a
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
* \9 u+ x, N) R.text:08074098 public CHAR_GetLevelExp
' r5 w% n7 i. {1 ebbs.mocwww.com.text:08074098 CHAR_GetLevelExp:
; P8 W/ `- q9 q.text:08074098 push ebp
1 E' p$ E5 \/ j8 r, d9 m魔力私服,最新魔力宝贝私服技术交流.text:08074099 mov ebp, esp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表) S. y0 N: O$ a" @, [6 s
.text:0807409B mov edx, [ebp+8] 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 g. ^+ O2 C, R. Z
.text:0807409E cmp edx, 7Eh ' a2 Z6 v6 D2 `
.text:080740A1 jbe short loc_80740C0
1 d1 K5 a7 K0 ~+ N魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A3 push ecx
6 |! G/ z ~/ u. R魔力私服,最新魔力宝贝私服技术交流.text:080740A4 mov ecx, 7 妖城在线论坛* N: R6 L9 E3 A9 e/ t4 g
.text:080740A9 push edx , I! J6 W' H2 p. ?. P% _& M, u
.text:080740AA mov eax, edx
# o: k" T: ]1 B N: H.text:080740AC imul eax, edx
& K9 I0 T. u9 {, M.text:080740AF imul eax, edx
* V9 A# @+ @8 R: P0 z魔力私服,最新魔力宝贝私服技术交流.text:080740B2 imul eax, ecx
8 C) S/ D0 T$ w) ^$ y' V.text:080740B6 loc_80740B6:
* h' i$ s3 p' [+ c/ E魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BE leave
$ h2 F0 t7 T4 U& B# {8 V$ U0 x妖城在线论坛.text:080740BF retn
& K( P: o% I( c( P8 y妖城在线论坛.text:080740C0 loc_80740C0: 妖城在线论坛9 t) d/ a5 ~- a" x# c; `8 N
.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4] 4 s; ^5 R- L4 z& f, I& F
.text:080740C7 jmp short loc_80740B6
' g {4 l. r* l! p/ }2 d% D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& i$ _& Y* q. x
粗糙的解释下这段代码的意思
0 }5 G7 f- C. f/ F+ D—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
. _! M7 \: p( e8 e D+ h% gPush edp
! \# J, p" q" W' H& ~魔力私服,最新魔力宝贝私服技术交流Mov ebp,esp
7 `) x, o. q' m; {魔力私服,最新魔力宝贝私服技术交流Mov edx,[ebp+8] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ ^, j5 z4 v3 d0 i$ e
获取当前等级的下一级存到edx
5 O# E! R4 a' W! y0 d7 X: a4 z妖城在线论坛5 B$ s. w7 A. J
Cmp edx,7eh
5 y& S# \5 L' @" r2 D" L将edx与7eh也就是10进制数130比较
( _' N3 V( Y" f+ I* |
2 x6 T, f9 V# F' }—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートJbe shortloc_80740C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 q+ E6 p; v/ U9 _
如果edx小于7eh则进行跳转到80740C0
( @; j5 f: T% m魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
5 m. j: P; r/ A5 w( t7 n妖城在线论坛Push ecx
- x' P5 S- x8 _* f& r+ }; \bbs.mocwww.comMov ecx,7 - Z# ]: g( b' ?9 n% E4 a) x7 b- O
给ecx赋值7 妖城在线论坛) I. R7 H5 \# {, }3 I
' E) d' E. l' APush edx 妖城在线论坛% v( Q# P; ]# [5 p! U
Mov eax,edx 5 }1 F6 j5 B# p
把当前等级+1的值给eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# L C+ v; r, y2 u* }& N
妖城在线论坛- f+ m7 F' V( b# z% ^; U
Imul eax,edx
$ Z- \. S: e: ]9 |* H8 @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート把eax与edx相乘,结果存在eax
" I7 k& W+ z; {/ i! F+ M& \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, g1 ?3 T4 ^: z/ u1 f1 }
Imul eax,ecx
, \9 o7 [: E* C1 z6 L) Rbbs.mocwww.com把eax与ecx相乘,结果存在eax
) Q9 D4 J1 c3 w+ {0 @& ^+ c* d( h—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
7 q9 v" p) Q Z' a$ \" p- y% y. C% m魔力私服,最新魔力宝贝私服技术交流Leave 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' V, w) T* C7 \/ ^- E
Retn 妖城在线论坛0 q/ ]2 X7 L m& _/ a8 N" ?1 z' g' M
退出这个过程吧,大概
8 _. A. Y* q( Q% w( K' ?妖城在线论坛
4 K* P% H0 [- l* C) Q9 i; {# q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov eax,dwordptrLevelUPtbl[edx*4]
' j( o7 F- q( c0 v3 m5 R$ D( \魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表这里是读取经验表的内容给eax,也就是查表读经验 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. D$ P% s8 }& D; b0 ^# A
魔力私服,最新魔力宝贝私服技术交流; j& H0 ^& L3 _; h5 J
jmp short loc_80740B6
# ^! P: g) a' x6 F0 E' h# J* k6 wbbs.mocwww.com强制跳转到80740B6
Q0 `; S" a7 F1 {妖城在线论坛4 v/ [5 |2 X9 ]8 C- F& G
好了,这段代码就这点意思,逻辑上不难理解。 魔力私服,最新魔力宝贝私服技术交流; E, j6 ^# O+ j
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
! }/ Q7 I0 p! y3 p7 _5 |5 N- n$ e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表bbs.mocwww.com( @- h5 o$ F& r9 D( w, i
分析完了之后开始修改了,上面的代码具体作用如下: bbs.mocwww.com- d+ ]% c1 b" B1 `2 o
判断等级下一级是否小于7eh,是则跳转到查表。
( E( F9 l7 x. D7 q6 i否的话也就是大于7eh时,按照下面算法运算
0 b# P, a: n3 p1 `( m魔力私服,最新魔力宝贝私服技术交流.text:080740A3 push ecx 魔力私服,最新魔力宝贝私服技术交流% g# }5 ]. y. a3 o* {9 M; `
.text:080740A4 mov ecx, 7
% H6 f9 l* w |: o* v4 @$ z o j: R妖城在线论坛.text:080740A9 push edx bbs.mocwww.com2 L7 O `5 E# t" H! g6 `. q% u) |
.text:080740AA mov eax, edx 妖城在线论坛# L2 S2 P# A1 ~5 Q& E y( j
.text:080740AC imul eax, edx
" f% s$ f- q. l$ B) s2 R—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AF imul eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表) e) ~2 J# z8 \
.text:080740B2 imul eax, ecx
5 y+ |4 q% z" a% c2 v6 R8 U, n也就是eax的三次方乘以ecx,这里可以改成我想要的。 , @6 h3 o7 N# o/ D; w+ O
0 S y+ w* z9 i5 f% `- e7 g魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表我的目标是改称等级的四次方除以50,但是问题来了。 魔力私服,最新魔力宝贝私服技术交流1 d0 k ~" Z2 x) F( w* @
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
. T+ c, N; G5 }! W& x魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 c$ K8 n& n5 Y- I4 ~$ ~3 K3 ?
.text:08074098 public CHAR_GetLevelExp
/ X5 V/ w) O% k$ w# U—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 CHAR_GetLevelExp:
. y) P( k0 y% V. e1 w—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 " W) w* ~& Y$ @- s5 A
.text:08074098 push ebp bbs.mocwww.com& g5 {( P1 H" [; f, F: {
.text:08074099 mov ebp, esp
3 c5 A9 [. ]/ p9 Y( F0 [( M妖城在线论坛.text:0807409B mov edx, [ebp+8]
7 o' z# B: h' E- [# @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409E cmp edx, 0FFh 妖城在线论坛3 J+ {9 T$ Q. j% l
.text:080740A4 jg short loc_80740C0 1 w5 |( ~9 V# f$ d% s/ y
.text:080740A6 push ecx 8 o7 ~' i1 v1 c. d
.text:080740A7 mov ecx, 32h
v. b! R E0 g, Y/ V魔力私服,最新魔力宝贝私服技术交流.text:080740AC push edx
# ?% M5 E: R0 @( {9 ^1 fbbs.mocwww.com.text:080740AD mov eax, edx
1 D3 h" B- A2 N; h9 ]* ?1 \, z.text:080740AF imul eax, edx 妖城在线论坛3 j3 k3 r6 k1 p& d2 \
.text:080740B2 imul eax, edx 妖城在线论坛 _9 c2 i. M3 t* p6 ~( Z# w+ B/ t
.text:080740B5 cdq
1 z" d; T' ?: q& Q2 ~魔力私服,最新魔力宝贝私服技术交流.text:080740B6 idiv ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" r9 |* D' \: C6 G/ ]( {" w, F. M
.text:080740B8 mov edx, [ebp+8]
/ p# v( ^- b7 ]) s p3 I( Nbbs.mocwww.com.text:080740BB imul eax, edx
9 B( u4 k5 {* u3 ~$ ~魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BE 妖城在线论坛% d( B+ J3 M; r/ h" i( z
.text:080740BE locret_80740BE: 魔力私服,最新魔力宝贝私服技术交流5 N3 K9 R0 Q# @6 z5 N0 L, z
.text:080740BE leave 魔力私服,最新魔力宝贝私服技术交流. Z; x1 o" k+ f* a8 J
.text:080740BF retn
' Z5 T: A8 f3 z5 M. t魔力私服,最新魔力宝贝私服技术交流.text:080740C0 loc_80740C0:
! m' B2 ^& i. S' X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 mov eax, 0FFFFFFFFh ) ~ @4 o% e$ o- [ `0 X
.text:080740C5 jmp short locret_80740BE
, H7 }- S: t: ~9 I—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- g, d `' z- S5 w
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
. E& ]; N. g8 w8 V0 m魔力私服,最新魔力宝贝私服技术交流Cmp edx,0FFh
0 D# S2 G0 i0 G# [( f2 X- I* {6 ybbs.mocwww.comJg shortloc_8074C0 魔力私服,最新魔力宝贝私服技术交流8 i3 K7 q) r, C9 u2 G
判断等级是否大于255是的话跳转80740C0
% i" O3 N& J/ P否的话进入我们的等级公式: 魔力私服,最新魔力宝贝私服技术交流% S5 @% O7 u+ t$ r8 v) ~, X+ @
(等级*等级*等级除以50)*等级 5 P4 \ X( d! O' R H' a6 s
也就是等级三次方除以50再乘以等级
) ?$ ~" z9 x" N" e0 ?bbs.mocwww.com为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 妖城在线论坛2 A K( t3 e8 C+ \
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
, W7 x, n4 B1 K+ S" Q& Tbbs.mocwww.com所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
+ z6 m( h8 [; `4 n, l% A) c' Kbbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# {, @# P; L5 ]9 d$ ?1 h9 C2 g/ _
接下去做公式:
4 l, M3 W7 }) L6 |3 I' U魔力私服,最新魔力宝贝私服技术交流Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验 妖城在线论坛' U5 z4 g1 u4 H" K4 a4 ~- @
Mov eax,edx 将下一等级的值赋值给eax
4 @5 E8 t" p. qImul eax,edx 将eax,edx相乘,结果存到eax
" \* p6 {5 p" X1 K: p—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul eax,edx 同上 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. c2 |6 ]/ ~$ k# _% s$ D0 g! @
Cdq 这个做除法不加就会出错,用户登录后服务器当机 ! E) V$ ? L9 y& e& k. e
Idiv ecx eax除以32h算到50倍经验 妖城在线论坛0 @: Z, T: F" V2 P8 x9 H, h
Mov edx,[ebp+8] 从新获取下一等级的值 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- T8 y* h# |$ V' v2 n; u6 O
Imul eax,edx 将eax,edx相乘,结果存到eax 妖城在线论坛/ s3 }. i; t' v1 T0 P6 D. e) p% @6 Q
! D' `0 l$ T# w& Dbbs.mocwww.com好了,这样就完成了运算过程。
$ A; {* L: |( _" T- w魔力私服,最新魔力宝贝私服技术交流
! \5 R8 e8 X2 w4 q5 G$ n( y3 V魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0: 魔力私服,最新魔力宝贝私服技术交流2 A( G# Y6 d0 y) [9 _/ q2 ?. X
mov eax, 0FFFFFFFFh
4 v* j5 q+ [4 I- N( c& t魔力私服,最新魔力宝贝私服技术交流jmp short locret_80740BE 魔力私服,最新魔力宝贝私服技术交流* g( q5 Q( f9 x
这一段代码就是等级超过你设置的上限之后返回-1。
7 z% i. q1 v) Q. j. x2 [—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート妖城在线论坛- H3 [$ O; {: {" p0 E7 w; F
# L. k+ r" z1 O% K8 [1 C9 C5 }7 f, g—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
! e5 i! _- }# t这里就要用到FlexHex了。
6 H& k9 U$ D% n2 `1 J% V—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
: B5 ?0 l M3 H0 b妖城在线论坛首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. o* B* `% b$ Y6 @3 C& O
如下对应: 魔力私服,最新魔力宝贝私服技术交流 {' v8 n3 m) E' d! ~
Cmp edx,0ffh 81 FA FF 00 00 00
) e8 R9 ]1 x3 J0 P. ^& O1 Z5 y—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjg short loc_80740C0 71 FA
, C" z$ S: J- |! Z/ ibbs.mocwww.commov ecx, 32h B9 32 00 00 00
+ \* l+ l' d4 M* M+ u魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
; [, M9 b. q+ {' j% [! Y7 F0 X妖城在线论坛依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
6 | N; Y* T: y7 r* l; A% X! Z9 A妖城在线论坛这个挺有乐趣可以自己慢慢享受摸索。
" f+ h$ _3 y( w8 G魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ M% J+ d* ]7 M" r
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。