没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 魔力私服,最新魔力宝贝私服技术交流4 U4 Q+ F1 G# [
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 bbs.mocwww.com* u, `- e% W$ T; i/ c
4 \" _; K! o4 x# j! |—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート用IDA载入gmsv,分析完成后进入Exports选项卡。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( j+ K# B$ t/ l) F/ E$ a8 d, h" \
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 ! I0 m' N# h' m; r5 h% h
.text:08074098 public CHAR_GetLevelExp
6 ]1 `* I+ z- S. i: H妖城在线论坛.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力宝贝私服技术交流' U9 r) O) p, s% b
.text:08074098 push ebp
( P9 t n8 y( s: A3 P _2 N& nbbs.mocwww.com.text:08074099 mov ebp, esp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; I; ]# z) M9 e# k/ U& B3 K; p5 h
.text:0807409B mov edx, [ebp+8] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 K$ J8 ]9 v: Y4 \
.text:0807409E cmp edx, 7Eh 妖城在线论坛& W; o! f3 D+ T$ Y
.text:080740A1 jbe short loc_80740C0 bbs.mocwww.com6 e u5 A+ D# `
.text:080740A3 push ecx
5 M7 R5 h# i4 p! p/ @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A4 mov ecx, 7 5 p2 K* z. P- O$ G# r6 s6 U
.text:080740A9 push edx 5 r3 H# g+ m `5 c
.text:080740AA mov eax, edx
2 |7 b& d9 D, z! I7 L% e—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AC imul eax, edx 妖城在线论坛* _ x- |1 F7 o
.text:080740AF imul eax, edx # D6 k4 @6 Q7 [! o8 `
.text:080740B2 imul eax, ecx
2 H5 P5 e( r* d0 e* x魔力私服,最新魔力宝贝私服技术交流.text:080740B6 loc_80740B6: 魔力私服,最新魔力宝贝私服技术交流+ k3 G' ? m0 W5 b: }6 E( S
.text:080740BE leave 5 }5 R/ Z5 m2 _5 \
.text:080740BF retn bbs.mocwww.com: o' c5 k V0 f
.text:080740C0 loc_80740C0:
! K% ~. T0 {- ~9 l$ s4 ^.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
' F: J/ d* [' f' H( B—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C7 jmp short loc_80740B6
% f8 I* J* |+ [' s* m8 S3 y7 Xbbs.mocwww.com魔力私服,最新魔力宝贝私服技术交流8 `6 j( l5 h# {$ Y: ?
粗糙的解释下这段代码的意思
# y T% f9 ~5 i3 g$ e' o3 M魔力私服,最新魔力宝贝私服技术交流1 O1 ]$ `$ r$ z$ `" R
Push edp
* O$ `$ E/ ], Cbbs.mocwww.comMov ebp,esp 妖城在线论坛: y; _" S, l: f v# F4 X7 R
Mov edx,[ebp+8]
8 h" t1 f9 M( x—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート获取当前等级的下一级存到edx
8 g& m1 R) E7 P) D! y# t7 |bbs.mocwww.com) x0 i3 F% m+ _ F* D
Cmp edx,7eh
9 j8 q3 g0 K* B将edx与7eh也就是10进制数130比较 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' ?6 t9 Q: l r- j* ?& n4 ^
z. _3 e+ O6 s2 O% v5 ]—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートJbe shortloc_80740C0 + Y4 q* s) A5 B" q6 S, Z
如果edx小于7eh则进行跳转到80740C0 bbs.mocwww.com1 Q3 ?( B ?3 P4 y" ~2 z
! E0 j2 f" p/ H. }# W& ]9 j1 ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush ecx 魔力私服,最新魔力宝贝私服技术交流6 k5 j$ R! y; E, Z7 J
Mov ecx,7 8 I9 y5 G& A( x0 e+ }
给ecx赋值7 妖城在线论坛5 e _/ u+ ~ y7 {9 e! p& I# c
5 S% \) a! c- h魔力私服,最新魔力宝贝私服技术交流Push edx 魔力私服,最新魔力宝贝私服技术交流1 ^- d7 c S; t- C. u: H4 H1 @ W7 e
Mov eax,edx
; E. ?9 H$ {" m4 s m4 |) k# z8 y妖城在线论坛把当前等级+1的值给eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" `1 s1 e# P& m9 f
6 i# a4 x: Q! X0 P* R- F) }魔力私服,最新魔力宝贝私服技术交流Imul eax,edx
y1 G1 R: t1 J( `4 }+ Hbbs.mocwww.com把eax与edx相乘,结果存在eax
9 k6 \- T; S. b妖城在线论坛—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ W% M' |# o/ g' b5 C( V
Imul eax,ecx
$ E9 b0 r) |+ @8 @. t- s6 }4 Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表把eax与ecx相乘,结果存在eax
0 G3 N" V( ?7 }) H' z; U—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートbbs.mocwww.com0 J ~. D& X! w- h$ t5 V
Leave 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" Y3 j- B# F2 a$ S( T
Retn 魔力私服,最新魔力宝贝私服技术交流* |1 M) ^4 P$ g* y* d
退出这个过程吧,大概
: F/ W* \6 |; Xbbs.mocwww.com+ Y9 V! ?% Q- a: r5 q
Mov eax,dwordptrLevelUPtbl[edx*4]
O& X; A9 j, c) j! v/ vbbs.mocwww.com这里是读取经验表的内容给eax,也就是查表读经验 妖城在线论坛8 p y! C+ A- m7 k7 R- E5 s
' i3 \$ k/ ]. K0 J魔力私服,最新魔力宝贝私服技术交流jmp short loc_80740B6 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" [ P3 w$ |+ @5 ^
强制跳转到80740B6
) o2 T; Z6 n4 Y3 G/ y妖城在线论坛
; J* `! N' c& c8 O4 m6 z" @" s! Fbbs.mocwww.com好了,这段代码就这点意思,逻辑上不难理解。 bbs.mocwww.com8 C+ y, q0 s7 r5 J) k
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
! \- [$ ?! K/ a& g$ X* @: x魔力私服,最新魔力宝贝私服技术交流
+ G( L3 t9 H8 X$ {4 `魔力私服,最新魔力宝贝私服技术交流分析完了之后开始修改了,上面的代码具体作用如下: bbs.mocwww.com G% M% {. p7 j3 E3 w3 ?
判断等级下一级是否小于7eh,是则跳转到查表。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( b7 B9 y! p* s3 ~% V( ~1 e! N$ Z
否的话也就是大于7eh时,按照下面算法运算 妖城在线论坛2 ]0 h1 o7 Y7 B1 A
.text:080740A3 push ecx
2 x( [ [% o- p+ |妖城在线论坛.text:080740A4 mov ecx, 7
/ k& q' Q2 g" L. Y3 z3 e8 |魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A9 push edx
4 Z, g7 o6 v" @% I妖城在线论坛.text:080740AA mov eax, edx 魔力私服,最新魔力宝贝私服技术交流* B* w* n$ T7 C g8 ]* j7 ]3 Q& a
.text:080740AC imul eax, edx * p; e6 D o* D+ i4 {
.text:080740AF imul eax, edx
6 @7 G' g* d/ X/ ebbs.mocwww.com.text:080740B2 imul eax, ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 @( E! O) l( a, G
也就是eax的三次方乘以ecx,这里可以改成我想要的。 妖城在线论坛3 S) O! I# ]; d5 M" M- o+ U
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# H$ U3 H5 `* ]! Q6 b
我的目标是改称等级的四次方除以50,但是问题来了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 b# Q: ~7 }) U& i, W2 H
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 魔力私服,最新魔力宝贝私服技术交流$ z8 W% u4 M+ g, L. f m- w
" [- {/ T/ s, h2 f1 j魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074098 public CHAR_GetLevelExp
8 M- ?$ D5 U$ r8 j—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 CHAR_GetLevelExp: bbs.mocwww.com8 i* \! g7 G+ Z2 F1 R) I
.text:08074098 魔力私服,最新魔力宝贝私服技术交流8 L9 H/ M6 @0 B( B' y& g1 m; w
.text:08074098 push ebp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 H% N3 P; X: Y* _+ f
.text:08074099 mov ebp, esp
# e1 @/ V, Q! T# V& U—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409B mov edx, [ebp+8] 妖城在线论坛5 Y ]6 t2 W! _
.text:0807409E cmp edx, 0FFh 魔力私服,最新魔力宝贝私服技术交流. d0 V+ m) i7 K6 ?. C4 M$ ^: q
.text:080740A4 jg short loc_80740C0 bbs.mocwww.com7 L8 t: E; f1 a& b
.text:080740A6 push ecx 魔力私服,最新魔力宝贝私服技术交流/ Q, i9 h. J! x9 U, o9 M
.text:080740A7 mov ecx, 32h 妖城在线论坛& W' y g+ v4 {% o7 p+ ?9 C& x
.text:080740AC push edx
1 d6 E$ P* K2 i# i% r.text:080740AD mov eax, edx bbs.mocwww.com6 `" b4 E5 n- v2 |7 \) o
.text:080740AF imul eax, edx 妖城在线论坛. v$ h8 v3 ~6 Q5 A4 r3 x! z
.text:080740B2 imul eax, edx
" l( |2 j4 _2 o1 y: k& K妖城在线论坛.text:080740B5 cdq bbs.mocwww.com: U* J) F' K5 Y4 J9 b+ `0 p" L4 Y
.text:080740B6 idiv ecx
% ]* J: K8 O2 q G' }1 D6 i.text:080740B8 mov edx, [ebp+8] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 x) G4 R) ?* v: w8 T
.text:080740BB imul eax, edx
/ S& G2 P0 e- {, }bbs.mocwww.com.text:080740BE 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 l X. L5 N$ C) N+ ]# \! `" H
.text:080740BE locret_80740BE: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! c) K) j& K6 f2 i3 J4 d2 L/ q
.text:080740BE leave 魔力私服,最新魔力宝贝私服技术交流+ F) D3 c" R" a9 _7 D- C& C
.text:080740BF retn
1 f2 H) H4 v! W魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! ?$ r: C4 C+ i. g1 d S
.text:080740C0 mov eax, 0FFFFFFFFh
3 n* x. p$ z2 ^魔力私服,最新魔力宝贝私服技术交流.text:080740C5 jmp short locret_80740BE
a! V/ T% b) U2 d7 Y妖城在线论坛! H* L3 p( a" M8 ^3 L' w+ p
方便起见这里直接把我改好的代码贴出来,与原来不同的地方: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 d [7 e0 {4 c- Q' c v: V
Cmp edx,0FFh
! X. L2 v6 e+ Y4 v0 E4 ]% O0 r—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートJg shortloc_8074C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ K1 }! O: ~$ t5 G) ?3 n
判断等级是否大于255是的话跳转80740C0
6 C7 v' t* ~$ ^# _; z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表否的话进入我们的等级公式: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; R* K- q7 P3 Z3 n1 h* q
(等级*等级*等级除以50)*等级
p; f q% y. {* a魔力私服,最新魔力宝贝私服技术交流也就是等级三次方除以50再乘以等级 魔力私服,最新魔力宝贝私服技术交流1 U/ P& v, h" o9 T
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
6 }/ @8 c1 P2 r妖城在线论坛216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
; G l: @9 `8 O9 Obbs.mocwww.com所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 bbs.mocwww.com$ ^$ u, Z" F% L6 m } S$ ^
1 {4 e- J2 h# H" v魔力私服,最新魔力宝贝私服技术交流接下去做公式: 魔力私服,最新魔力宝贝私服技术交流8 V& J7 o" j' `4 \+ y
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 _$ Y# c4 {, v4 d6 U0 @ j
Mov eax,edx 将下一等级的值赋值给eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% j- A; k4 Q( l& ]3 |) m3 X) R+ C" C
Imul eax,edx 将eax,edx相乘,结果存到eax
9 v4 G i" H) V% W {1 @魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx 同上 + O4 {& d1 M% T/ b1 w* y$ Z
Cdq 这个做除法不加就会出错,用户登录后服务器当机 魔力私服,最新魔力宝贝私服技术交流% U' m( _+ j% @* Z1 O8 g9 P" J! p; F
Idiv ecx eax除以32h算到50倍经验 8 e2 x4 ^2 [% F+ R9 Z s
Mov edx,[ebp+8] 从新获取下一等级的值
% s2 @. @7 f( [" z) `. l- u9 Z魔力私服,最新魔力宝贝私服技术交流Imul eax,edx 将eax,edx相乘,结果存到eax 魔力私服,最新魔力宝贝私服技术交流: a+ w: B# i x; q. V1 J, Q
魔力私服,最新魔力宝贝私服技术交流+ O" h8 L; q' X5 o+ f' ~( C
好了,这样就完成了运算过程。
4 x4 z" i" Q4 ]- F0 T6 Gbbs.mocwww.com
& y8 l; M' |7 Q7 K—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 loc_80740C0: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 C' |% ] K5 r+ x
mov eax, 0FFFFFFFFh
, X% M- i+ T: s9 ^+ }jmp short locret_80740BE
$ M( n5 |5 q1 y# s4 b9 gbbs.mocwww.com这一段代码就是等级超过你设置的上限之后返回-1。
+ P) Q8 \' S# A妖城在线论坛魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ K7 H% a7 o1 Y6 m8 C: O& u
bbs.mocwww.com9 X- R/ A# J9 o6 i! ^ N: t. f
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 妖城在线论坛/ F9 l$ ^! K. A R/ p$ B
这里就要用到FlexHex了。
5 V1 J# K$ x) z2 ^. T—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# F6 J8 {6 ]. _# Z) k* w
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 bbs.mocwww.com1 S% Y7 S1 G k% p$ f
如下对应:
: o6 Z* N, \. \! j1 v魔力私服,最新魔力宝贝私服技术交流Cmp edx,0ffh 81 FA FF 00 00 00
8 t: ]3 y. H5 O8 k" P ^* s6 u—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjg short loc_80740C0 71 FA 妖城在线论坛( U: s9 U. d2 c; h+ c
mov ecx, 32h B9 32 00 00 00 bbs.mocwww.com& c+ @! o Y2 B; i
5 b: ]) A$ R2 {6 u1 \$ a. q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 魔力私服,最新魔力宝贝私服技术交流7 U( j( X; `8 h% b* a9 v
这个挺有乐趣可以自己慢慢享受摸索。 妖城在线论坛9 U# R' z% b( i7 H( [; p0 [
( n7 e6 `$ X* k. T8 ?6 l0 M& m( @妖城在线论坛以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。