没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 bbs.mocwww.com% a, U' m- U' |8 H3 p: ~
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 bbs.mocwww.com8 G. T% |4 D6 i* ~4 a" U' s- g3 x1 u. x
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- q; w$ D7 A, n0 b1 |
用IDA载入gmsv,分析完成后进入Exports选项卡。
3 J2 s8 f# ~8 `$ n魔力私服,最新魔力宝贝私服技术交流搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( J- q4 l* U1 m
.text:08074098 public CHAR_GetLevelExp
! w- K/ X2 v ]* D+ Z& I妖城在线论坛.text:08074098 CHAR_GetLevelExp:
2 X* b3 M8 M% Z魔力私服,最新魔力宝贝私服技术交流.text:08074098 push ebp bbs.mocwww.com! C& u( G7 w0 V d/ Y+ r$ u
.text:08074099 mov ebp, esp
, D9 V+ ^) C8 M# N3 ?魔力私服,最新魔力宝贝私服技术交流.text:0807409B mov edx, [ebp+8] ; N* R6 Y4 {+ ?9 }0 X& |2 f: `5 ?
.text:0807409E cmp edx, 7Eh
5 b2 M2 I% N$ m' n.text:080740A1 jbe short loc_80740C0
( X4 u" {1 B' _* s7 ^7 \! }妖城在线论坛.text:080740A3 push ecx 妖城在线论坛3 K! n. h) m% A: d9 r3 A
.text:080740A4 mov ecx, 7
" P+ _+ q% S: W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A9 push edx
~, v* s8 D8 M9 P. g7 b魔力私服,最新魔力宝贝私服技术交流.text:080740AA mov eax, edx
7 z* u c5 \ W i4 J9 C' H) M.text:080740AC imul eax, edx
% b) D+ `4 u6 X1 ]$ ?5 }5 o3 \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AF imul eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; h" ~( |+ ?2 p5 u" s4 e! z ^1 ^
.text:080740B2 imul eax, ecx 魔力私服,最新魔力宝贝私服技术交流4 Y: G/ F$ V% @6 B8 x; S
.text:080740B6 loc_80740B6:
: F0 B% i5 q$ R4 V妖城在线论坛.text:080740BE leave
5 p' R1 ^" d+ r7 o a.text:080740BF retn
) B$ F5 U- X% R! ~% X Q1 p.text:080740C0 loc_80740C0: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 B, e4 h. d+ ]+ g* b1 m6 ~+ }
.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
% g% _" s8 i. U5 V7 w. g妖城在线论坛.text:080740C7 jmp short loc_80740B6 bbs.mocwww.com- `1 @! Y) e9 P/ R+ T2 G) \
妖城在线论坛: f, {# i$ D2 d p
粗糙的解释下这段代码的意思
4 C+ T7 F' G- W: Q1 t& n9 u! b魔力私服,最新魔力宝贝私服技术交流—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( `7 S% O5 x% w+ r% F& q4 B' H
Push edp 魔力私服,最新魔力宝贝私服技术交流, C4 S% c+ R+ A6 G+ \, O
Mov ebp,esp
& V$ r0 T7 X6 u$ E: o$ r* Q/ ~0 @4 c6 u妖城在线论坛Mov edx,[ebp+8] 妖城在线论坛* D& d0 \$ Z1 S/ s/ Z& j/ ^
获取当前等级的下一级存到edx
7 q9 [3 h- S' }& Y魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力宝贝私服技术交流+ g% i! J9 D; y8 h; h
Cmp edx,7eh
' ?4 @& J1 y, \% g* L/ ~bbs.mocwww.com将edx与7eh也就是10进制数130比较 妖城在线论坛8 Q3 A2 u1 s) W# o' b
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 x# I: }* E, e! _! T/ ~6 I
Jbe shortloc_80740C0 bbs.mocwww.com+ L) [, Z; X7 R @2 Z/ Q) {9 V' g
如果edx小于7eh则进行跳转到80740C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. {- A& [5 m. b9 j6 f
魔力私服,最新魔力宝贝私服技术交流9 w3 H! ]: ~& c8 _
Push ecx
5 O% C9 x' X: C7 }1 z' Z) ^$ j魔力私服,最新魔力宝贝私服技术交流Mov ecx,7 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' A( O0 ?! h% q7 v4 [, r
给ecx赋值7
* U( U) I, _% h+ \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート妖城在线论坛& R4 m+ e; N, Z% c+ ~+ D7 z- C# I( s
Push edx 7 j& O+ u$ j( K# i/ T7 q$ n' x& U
Mov eax,edx
) @7 d! i- y( W" }; K, @1 a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表把当前等级+1的值给eax f4 [; n6 S9 r/ c, i
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! ~3 K+ B9 J# F" q+ _1 d5 X
Imul eax,edx 妖城在线论坛& s; r7 ]% O4 n+ Y/ \, [
把eax与edx相乘,结果存在eax 魔力私服,最新魔力宝贝私服技术交流 m' H9 M( `8 |
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) P( W! j/ |& k/ |1 R$ N
Imul eax,ecx 妖城在线论坛) W4 C4 ]% n7 A: M+ o- ~6 b
把eax与ecx相乘,结果存在eax 妖城在线论坛5 s( N' c' v) T! m9 I! l# h# ~* S
b! c+ }: L q) M7 h m: L4 u$ _
Leave bbs.mocwww.com/ ~. a- L6 E/ S2 E
Retn
& }0 Z7 L! c3 X4 e—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート退出这个过程吧,大概
/ E$ g0 P1 J# D! |妖城在线论坛bbs.mocwww.com% @7 Z2 B2 T) z
Mov eax,dwordptrLevelUPtbl[edx*4] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 ^2 s1 u$ [% {$ ?4 Z1 Y; _. Q
这里是读取经验表的内容给eax,也就是查表读经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 I0 v7 [" n5 O
c4 G* B; l. u' Q& U$ D) Fbbs.mocwww.comjmp short loc_80740B6
2 F* z, r+ X; C) m2 c* Q妖城在线论坛强制跳转到80740B6 / x, M5 [1 [) x/ Q E9 m$ E( T
bbs.mocwww.com- k# h& d7 x+ Q9 ]7 d" D
好了,这段代码就这点意思,逻辑上不难理解。
* t6 ~+ e& @ _8 G3 `% w* Qbbs.mocwww.com虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
6 k$ w1 L. u p6 E3 K8 ]6 e0 D9 Tbbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート K8 M2 X# x( q8 n$ Z" L0 t
分析完了之后开始修改了,上面的代码具体作用如下:
2 J- n6 _/ \ i. W: Ubbs.mocwww.com判断等级下一级是否小于7eh,是则跳转到查表。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% }4 ^7 K: V9 {! H
否的话也就是大于7eh时,按照下面算法运算 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート }# ?. ?: { C0 \" o2 k R
.text:080740A3 push ecx 魔力私服,最新魔力宝贝私服技术交流+ p: T1 A* Q: P$ q4 H5 z1 g5 a3 z
.text:080740A4 mov ecx, 7 bbs.mocwww.com7 h) t; o% p" |: }3 @; A: B
.text:080740A9 push edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ e' H0 _2 [5 c( U
.text:080740AA mov eax, edx 魔力私服,最新魔力宝贝私服技术交流# h- w/ {( }% ^* q Y2 e( j
.text:080740AC imul eax, edx 魔力私服,最新魔力宝贝私服技术交流& k# a5 T1 O; E* B
.text:080740AF imul eax, edx
# u! K* n" v6 E+ Y5 ]& L% g—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B2 imul eax, ecx ) T6 K& M8 U$ g. R4 O$ a
也就是eax的三次方乘以ecx,这里可以改成我想要的。 魔力私服,最新魔力宝贝私服技术交流4 q9 b( q; V% p0 j% x
- P8 \7 Y% _8 f& g我的目标是改称等级的四次方除以50,但是问题来了。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ M0 h/ ^( `" V- U6 g- Z
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
6 c: w' U4 k' H—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
) I+ @/ K- C P! j# I& Mbbs.mocwww.com.text:08074098 public CHAR_GetLevelExp
9 E, g8 b% l" [" t+ c4 X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 CHAR_GetLevelExp:
6 I1 t4 ^+ C+ }+ Y* Q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074098
/ z* q$ u k4 w8 J* U3 D* D魔力私服,最新魔力宝贝私服技术交流.text:08074098 push ebp , g9 w8 V- S1 q2 L8 M
.text:08074099 mov ebp, esp
- [1 R) l7 h* h) w" t.text:0807409B mov edx, [ebp+8] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" G0 r: y& b) D, ~" i
.text:0807409E cmp edx, 0FFh
* x" ^/ }1 f6 l: I1 p) p魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A4 jg short loc_80740C0
/ Z6 y8 Y1 W8 O# Z6 b5 k妖城在线论坛.text:080740A6 push ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ c1 C9 M! I; @# {
.text:080740A7 mov ecx, 32h —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 z( T0 |6 @% w6 u* u& B) C
.text:080740AC push edx 魔力私服,最新魔力宝贝私服技术交流! I H! z- g. d% F% Y4 I1 u
.text:080740AD mov eax, edx 7 m L; P: A6 m
.text:080740AF imul eax, edx
; X. a0 m! d6 L( Q妖城在线论坛.text:080740B2 imul eax, edx : l2 w7 \6 U# s) X+ j0 `
.text:080740B5 cdq —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 z7 _: @ n/ V- U
.text:080740B6 idiv ecx
. ?3 t' i7 ]2 [妖城在线论坛.text:080740B8 mov edx, [ebp+8] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート3 V9 h* F$ {0 }- [ r3 N( u
.text:080740BB imul eax, edx 魔力私服,最新魔力宝贝私服技术交流7 Y" i) a* r) l7 x0 U! X
.text:080740BE 1 T# k0 F" `( ?" G$ f$ I4 n l
.text:080740BE locret_80740BE:
) g4 r, T& H8 Z2 Q6 Z+ p.text:080740BE leave 妖城在线论坛) Y- L9 t7 B& g1 z2 B5 x
.text:080740BF retn
7 ^, b/ e7 q1 \0 p魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0: 妖城在线论坛; A% A1 U- Y" K0 q7 `2 {* g7 I
.text:080740C0 mov eax, 0FFFFFFFFh bbs.mocwww.com' }$ `8 C4 l1 T* Q
.text:080740C5 jmp short locret_80740BE
( H8 `8 ^- P; m: Y: O魔力私服,最新魔力宝贝私服技术交流
& V z- p2 R3 b方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
7 q1 c3 D* U7 A" [Cmp edx,0FFh bbs.mocwww.com" Y: v# |1 k' {/ a
Jg shortloc_8074C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! |; {7 A7 k. Q1 P
判断等级是否大于255是的话跳转80740C0
/ N+ [: \& M6 g3 ]& p+ D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表否的话进入我们的等级公式: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 v/ l3 [! {# L( u1 s1 B1 S6 @2 i- M
(等级*等级*等级除以50)*等级 魔力私服,最新魔力宝贝私服技术交流2 P: u2 v# }; W8 X
也就是等级三次方除以50再乘以等级
5 ]& d- q3 y9 M0 ~4 R: Ebbs.mocwww.com为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
h$ s; m& y; X7 O! Y216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
1 i. }1 v' j( F) k妖城在线论坛所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 魔力私服,最新魔力宝贝私服技术交流$ p" L- m2 C& ?; H9 [
妖城在线论坛( V, D0 _& U# r6 @* O& t5 `$ q9 L
接下去做公式:
8 q; H2 |2 P5 C" s& q妖城在线论坛Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
% w0 O2 G/ V" k& e! \5 w( ~bbs.mocwww.comMov eax,edx 将下一等级的值赋值给eax
) Q/ N5 i5 r& U( N. n5 O `bbs.mocwww.comImul eax,edx 将eax,edx相乘,结果存到eax bbs.mocwww.com; g( g! V" |, w
Imul eax,edx 同上
, ?$ U; G: \8 wbbs.mocwww.comCdq 这个做除法不加就会出错,用户登录后服务器当机
; B' o. m; H* h# r魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Idiv ecx eax除以32h算到50倍经验
3 `% M+ F% U) ~+ \! b- lMov edx,[ebp+8] 从新获取下一等级的值
3 Q( C! x2 p) d$ F. I魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx 将eax,edx相乘,结果存到eax
/ Y5 {+ ^9 E) [ Y" v9 J; o1 H( Sbbs.mocwww.com
# F C% l: d) j5 O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表好了,这样就完成了运算过程。 ( y3 r; f' D! _
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 k7 C& G; ?( n( V' I! q
.text:080740C0 loc_80740C0:
8 `/ W1 I. S: D6 d* |) A8 Gmov eax, 0FFFFFFFFh
5 X# Y" ]4 N! _7 @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjmp short locret_80740BE
% x/ Z0 n+ p9 k& ?3 tbbs.mocwww.com这一段代码就是等级超过你设置的上限之后返回-1。
. D4 C, O0 N/ @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
$ ~( A q: f/ X0 G魔力私服,最新魔力宝贝私服技术交流
' |3 I6 b+ t$ t+ t" ^; I" i魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 魔力私服,最新魔力宝贝私服技术交流7 P; F6 D" t5 R( P2 c F# B$ [
这里就要用到FlexHex了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 m3 @! `5 R. w0 @7 [# t
1 m; P+ ~) P0 v—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 , z' |1 v2 R4 D
如下对应:
$ W" [! \4 a& S3 l妖城在线论坛Cmp edx,0ffh 81 FA FF 00 00 00 妖城在线论坛9 r0 ` Y0 |# L7 G0 C2 ]- X
jg short loc_80740C0 71 FA —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* a9 G, G% `$ t- l" G& E
mov ecx, 32h B9 32 00 00 00 $ J" A' H ?1 R( b
3 }/ o$ ^. ?0 l7 F3 B魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
, p' Y5 a0 t9 L1 A妖城在线论坛这个挺有乐趣可以自己慢慢享受摸索。 妖城在线论坛/ d2 J" Y' `2 y3 ~/ u& ]4 x
; B* E2 |! Z$ L9 N. L$ L以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。