没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 bbs.mocwww.com k5 w7 @" v: T- J( L, Y. A0 p
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 7 g/ n1 p3 `% S# d$ H8 z: L5 t% l# u+ q
, r4 y1 J, }8 l8 ~# N魔力私服,最新魔力宝贝私服技术交流用IDA载入gmsv,分析完成后进入Exports选项卡。 妖城在线论坛9 p6 e' t# R% T. T4 M1 [/ _
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 bbs.mocwww.com6 h' z0 U- {) b
.text:08074098 public CHAR_GetLevelExp 魔力私服,最新魔力宝贝私服技术交流7 T u& A7 d) O6 ]4 z
.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力宝贝私服技术交流2 C6 i e4 @: V; e
.text:08074098 push ebp 妖城在线论坛9 J; J8 C) j% | }1 Q8 L [
.text:08074099 mov ebp, esp
% o, u- E8 V6 b& t2 q' n, A9 V魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:0807409B mov edx, [ebp+8]
5 U+ _& R& } w2 i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409E cmp edx, 7Eh
1 i* n2 Q- x0 Q. C# \2 X.text:080740A1 jbe short loc_80740C0
" }" S5 R5 K$ R6 F- j' J.text:080740A3 push ecx 妖城在线论坛5 L9 c+ m* r- T; K# G% `( @6 l
.text:080740A4 mov ecx, 7
# |5 Z- j2 B# i2 L& L5 z魔力私服,最新魔力宝贝私服技术交流.text:080740A9 push edx 魔力私服,最新魔力宝贝私服技术交流% s& U% ]: r. n* _9 \
.text:080740AA mov eax, edx 0 ^3 q5 S7 x* V
.text:080740AC imul eax, edx 3 U8 e5 \+ M. k! |( g
.text:080740AF imul eax, edx
" a, k8 M! F: k; E魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B2 imul eax, ecx 妖城在线论坛4 l2 m% M+ x; b1 T( z$ t
.text:080740B6 loc_80740B6:
, @. v! V0 G" \; p& G& E.text:080740BE leave
' f9 ^7 `) G# B: a( @" d- K魔力私服,最新魔力宝贝私服技术交流.text:080740BF retn
# W' U$ ~& e" E# ]. }* W1 E9 |—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 loc_80740C0: 魔力私服,最新魔力宝贝私服技术交流 H; R* n3 D4 U
.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4] ' }: t6 a9 _, Q" e3 g) `7 C
.text:080740C7 jmp short loc_80740B6
" S0 D% A' K5 r2 Z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
N3 p9 @# x9 Q& @8 i$ R) `! Jbbs.mocwww.com粗糙的解释下这段代码的意思 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( Y, d$ {' [6 F; L* `/ ?. w }% u
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% e$ L1 e `# C9 [& c$ ^4 _2 R+ G: V
Push edp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& Y3 V! X$ P! n% g; A
Mov ebp,esp 妖城在线论坛2 V2 j J: |# I" r0 j- n& N9 ?( e a# q, @
Mov edx,[ebp+8] bbs.mocwww.com% p# S' X& a% n4 X A: P
获取当前等级的下一级存到edx
9 s/ f( p* Z5 H& J N4 jbbs.mocwww.com
5 P F, W& a( V' k- f7 {' I0 A妖城在线论坛Cmp edx,7eh
_. Z+ f0 T- ], f—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート将edx与7eh也就是10进制数130比较 魔力私服,最新魔力宝贝私服技术交流7 U0 Q" a6 a8 p
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; e% `. S; j, E( |) L
Jbe shortloc_80740C0
" r* F& g! [4 Y8 |—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート如果edx小于7eh则进行跳转到80740C0
' A: a0 e( X% w- E+ \* Gbbs.mocwww.com
2 _ Y( g9 b. `7 s, s$ `妖城在线论坛Push ecx 妖城在线论坛7 c& M7 a2 ~! r! w: L* |
Mov ecx,7 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表5 ]# h0 r/ ]4 }0 S" I* y
给ecx赋值7 bbs.mocwww.com p4 c6 H# _& [
魔力私服,最新魔力宝贝私服技术交流+ S! V" f% a$ S
Push edx bbs.mocwww.com" z3 `& K: N# D& V. p
Mov eax,edx
$ ?6 u1 q+ b$ v+ E- G/ Z把当前等级+1的值给eax
* C8 @# E/ U* m+ z9 K! d# a妖城在线论坛
' e7 l( R5 ^- L- ~2 r o6 @$ m+ P' ~# t魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx
8 N% s5 h3 T2 n, G2 d- W4 W, ]—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート把eax与edx相乘,结果存在eax 魔力私服,最新魔力宝贝私服技术交流0 \" T& [" g$ b. F9 E
4 i0 J$ j5 @4 h5 N妖城在线论坛Imul eax,ecx
: h8 r' P% R) g2 z0 B* P魔力私服,最新魔力宝贝私服技术交流把eax与ecx相乘,结果存在eax
& d9 P6 u4 S3 k4 e: _魔力私服,最新魔力宝贝私服技术交流" r1 S( _$ M- Q4 G. W+ G
Leave —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( @' H2 g/ A+ e* T! B5 S
Retn
& J5 D/ ?# \1 g" b$ @ v妖城在线论坛退出这个过程吧,大概
4 {$ u# @0 `8 m$ Q jbbs.mocwww.com' {8 j, u; H/ W. X2 d
Mov eax,dwordptrLevelUPtbl[edx*4] 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 h u5 Y; X) C" S; D
这里是读取经验表的内容给eax,也就是查表读经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' z/ G. x8 g# [0 t5 C; \
魔力私服,最新魔力宝贝私服技术交流. [: Q; B1 i! [0 f
jmp short loc_80740B6
* G( b( n# }) G: Gbbs.mocwww.com强制跳转到80740B6
% ]" G+ o6 e( k( e魔力私服,最新魔力宝贝私服技术交流
0 V6 W5 E6 t- G# J8 }好了,这段代码就这点意思,逻辑上不难理解。 魔力私服,最新魔力宝贝私服技术交流6 j, X4 S4 Q" y
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
* U1 u0 ^4 _: J3 Q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
, W* `& d! O/ m: H" B- Q. t; j: c魔力私服,最新魔力宝贝私服技术交流分析完了之后开始修改了,上面的代码具体作用如下: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 z) Z% Z6 I+ A! n& C+ P; b. |
判断等级下一级是否小于7eh,是则跳转到查表。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ {* ?' j' o( N, q1 N
否的话也就是大于7eh时,按照下面算法运算
- i, |, v5 Q/ p: S# Bbbs.mocwww.com.text:080740A3 push ecx $ Z2 o6 g) C2 S) \1 f9 ]
.text:080740A4 mov ecx, 7 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: d, L1 B' r ^( k
.text:080740A9 push edx , B8 u4 e- I4 D* E& P
.text:080740AA mov eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート S% J& }% |* f5 `5 r6 m8 j
.text:080740AC imul eax, edx
1 [5 U1 v. w6 G/ ^) T( bbbs.mocwww.com.text:080740AF imul eax, edx
/ U9 P9 p, H6 l6 z8 ?. _# N1 @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B2 imul eax, ecx 妖城在线论坛8 G1 D5 ^- Q1 R4 P/ [4 J- d1 i e0 V
也就是eax的三次方乘以ecx,这里可以改成我想要的。 妖城在线论坛( L- {' Z: ?9 h2 G
bbs.mocwww.com9 {5 m9 X- p! R" X; b
我的目标是改称等级的四次方除以50,但是问题来了。 bbs.mocwww.com, O. _# B. c: p$ \' D
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
2 l$ s: a' _1 j魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
# y6 i0 t5 I/ `$ m—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 public CHAR_GetLevelExp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ U1 ?8 z. F+ V" O( q' l- U
.text:08074098 CHAR_GetLevelExp: 6 {' H$ ^& H' V* Q; b
.text:08074098 + z6 ?8 U3 ~0 |) f6 ^
.text:08074098 push ebp 妖城在线论坛0 N4 m4 f- H# p l
.text:08074099 mov ebp, esp
- n* p L L; r* B; Z2 q& o魔力私服,最新魔力宝贝私服技术交流.text:0807409B mov edx, [ebp+8]
2 y8 b" h" I% ~魔力私服,最新魔力宝贝私服技术交流.text:0807409E cmp edx, 0FFh —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート3 v4 D7 H" l% M$ X
.text:080740A4 jg short loc_80740C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 M- B0 t& n3 ~& X% R
.text:080740A6 push ecx
8 [- `8 s; Y7 V8 V% s" T& l4 j魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A7 mov ecx, 32h
! W0 q% s0 M+ S& C3 V$ e* v.text:080740AC push edx
& U, W9 i- y3 q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740AD mov eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( Z- x! i! x' t8 p, j/ _
.text:080740AF imul eax, edx 魔力私服,最新魔力宝贝私服技术交流9 Y# s- A& I/ D$ ^5 n& u8 H5 v
.text:080740B2 imul eax, edx
. m: ]$ K! K1 m/ X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B5 cdq
* G& l9 U4 l: V: N7 ibbs.mocwww.com.text:080740B6 idiv ecx
- T8 e9 s0 ` A7 i; u& P3 K妖城在线论坛.text:080740B8 mov edx, [ebp+8]
% q. r s/ X" h R5 fbbs.mocwww.com.text:080740BB imul eax, edx
- \: f& b0 a' l0 Fbbs.mocwww.com.text:080740BE : J, R% o9 u9 h+ g7 s6 ?
.text:080740BE locret_80740BE: bbs.mocwww.com7 w. m4 J. U2 I6 e& `6 ~# T
.text:080740BE leave 妖城在线论坛! u7 V; x* S% S7 q% s
.text:080740BF retn 魔力私服,最新魔力宝贝私服技术交流5 S- K+ I7 O' r ?3 x" ^. W
.text:080740C0 loc_80740C0: 妖城在线论坛; G+ _: S' f2 Q/ e$ t
.text:080740C0 mov eax, 0FFFFFFFFh 魔力私服,最新魔力宝贝私服技术交流+ |3 H' j: Q! Q9 ]$ W/ @
.text:080740C5 jmp short locret_80740BE
0 B; r B& p# k! Z: e6 D0 D2 ~; ?9 Z* }% [5 ]
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
) U9 c; y: F- T: k! o! K9 }魔力私服,最新魔力宝贝私服技术交流Cmp edx,0FFh —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( f/ I: h# D: }- n
Jg shortloc_8074C0 4 O, W' e o0 m; u( {' h0 w
判断等级是否大于255是的话跳转80740C0
% Y1 I1 t" S. r2 S魔力私服,最新魔力宝贝私服技术交流否的话进入我们的等级公式:
" d7 w. A8 L0 U# q' w& b7 T7 i1 Nbbs.mocwww.com(等级*等级*等级除以50)*等级
% {$ ]& N* m9 w2 ?! ?4 [. A( |9 X魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表也就是等级三次方除以50再乘以等级
3 H$ O. h# z& m6 N6 M% @' [$ B$ @bbs.mocwww.com为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 妖城在线论坛: Q+ `) Y r- P2 {5 C6 \ u8 X
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
: o5 F$ T( L: i3 G+ R/ I" |# N—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
7 N- w, f B0 a魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表5 a7 a- f8 q6 A5 i* u0 d- Y" [/ ]
接下去做公式: 魔力私服,最新魔力宝贝私服技术交流' w+ o8 C, d) d; n
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ w6 Q* m& g7 Y. {6 }$ F/ \
Mov eax,edx 将下一等级的值赋值给eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 | p0 c6 e( P+ E
Imul eax,edx 将eax,edx相乘,结果存到eax
) L2 `, S; j, ^2 Q; q魔力私服,最新魔力宝贝私服技术交流Imul eax,edx 同上
, }" N0 T5 R9 o/ J- H& K9 V魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cdq 这个做除法不加就会出错,用户登录后服务器当机
3 K: n" W/ @/ ~0 b7 i JIdiv ecx eax除以32h算到50倍经验 bbs.mocwww.com2 |7 j8 s) ~+ a% U ?2 U% R
Mov edx,[ebp+8] 从新获取下一等级的值 妖城在线论坛; |) }6 P/ e5 M) [
Imul eax,edx 将eax,edx相乘,结果存到eax / p# s( t6 ? b; O$ B) _' a R
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& ~ `4 p* k1 N
好了,这样就完成了运算过程。 . e# A, s- D- n& G
7 |( g* ]4 d2 @ M1 a; G—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 loc_80740C0: 妖城在线论坛" ^9 }6 d: g; Z. V# L$ C
mov eax, 0FFFFFFFFh
+ H7 I8 x1 v( ]! ? m—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjmp short locret_80740BE bbs.mocwww.com- a, e u" Z# R- U
这一段代码就是等级超过你设置的上限之后返回-1。
1 ]' w/ ~' t9 u% `9 X7 M, Q妖城在线论坛妖城在线论坛- g' M2 Q; ?; B# o. s X* n
妖城在线论坛' e7 z! P. c- Q5 J) ^) G
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 魔力私服,最新魔力宝贝私服技术交流& V. r# I: O$ z
这里就要用到FlexHex了。 魔力私服,最新魔力宝贝私服技术交流! B- j( R' l$ e1 Q4 h* J* W
- h2 d- y! Y' z5 ~9 h9 q" p+ u魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 ' l, U, I4 h- l8 q- c( d
如下对应:
' q- ]6 {6 m2 `& i( F" W2 Fbbs.mocwww.comCmp edx,0ffh 81 FA FF 00 00 00
0 X, B0 x1 q+ d. E$ i- M魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表jg short loc_80740C0 71 FA
_* n" d2 o( |3 M4 u. K/ o% K/ k+ |3 i魔力私服,最新魔力宝贝私服技术交流mov ecx, 32h B9 32 00 00 00
) h% K! M- e9 Q0 \' ~1 q妖城在线论坛魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ i ? y8 i/ W; ] D$ W& {0 f6 X, }
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
" a- e7 G' |! Y6 U: W这个挺有乐趣可以自己慢慢享受摸索。 妖城在线论坛' ~3 b4 @3 w6 \' x: E
# d% M/ h' ^; R, O! Q P( s魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。