发新话题
打印

[魔力私服分享] 没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* b$ G9 D$ y+ P: J8 g0 D  k
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# Z( ~; n# l: t# ^
魔力私服,最新魔力宝贝私服技术交流- \% u$ {! i/ l& V4 L
用IDA载入gmsv,分析完成后进入Exports选项卡。 bbs.mocwww.com0 F) Z+ w+ ^- h( Z+ w2 j( y- t
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 6 R" M+ [6 ]- ?2 v/ d
.text:08074098                 public CHAR_GetLevelExp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" Q+ W; J+ Z: D
.text:08074098 CHAR_GetLevelExp:
# ~+ h# O* u5 _3 z/ a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074098                 push    ebp
: [, _! [) b6 nbbs.mocwww.com.text:08074099                 mov     ebp, esp 魔力私服,最新魔力宝贝私服技术交流( r0 x# X8 {2 ~# X5 r% f. _0 L
.text:0807409B                 mov     edx, [ebp+8]
6 V! q* W' f6 O4 ^妖城在线论坛.text:0807409E                 cmp     edx, 7Eh 妖城在线论坛% o: A! V' o4 e" M- A9 M
.text:080740A1                 jbe     short loc_80740C0
# V! i$ b& M7 P; j7 j* L4 \+ S6 C. v.text:080740A3                 push    ecx 妖城在线论坛) m7 F# f' c! ^* h: a# [, l' m% K
.text:080740A4                 mov     ecx, 7
  F2 Y7 q. t5 ^. G, `7 y) ^, {5 l妖城在线论坛.text:080740A9                 push    edx
- U7 G' J" [3 }- h1 K2 `4 u  S.text:080740AA                 mov     eax, edx
5 }/ {$ H! f9 t: M3 v  X妖城在线论坛.text:080740AC                 imul    eax, edx
* ~3 i/ n) @) u$ [魔力私服,最新魔力宝贝私服技术交流.text:080740AF                 imul    eax, edx
& z! }3 L8 M7 |- z- Q* S* W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B2                 imul    eax, ecx bbs.mocwww.com! K* u( _! |! |  @, z$ x# c$ I
.text:080740B6 loc_80740B6:   bbs.mocwww.com9 `; F0 p+ ]3 r/ d5 P  ?" e
.text:080740BE                 leave 魔力私服,最新魔力宝贝私服技术交流: N- l# ^4 Q* z& {( z$ ?6 u3 i
.text:080740BF                 retn 8 ?+ a$ w2 O7 R- Y
.text:080740C0 loc_80740C0:                           . b# Y3 N( o' Z; K
.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4]
5 P. _( P) `/ v妖城在线论坛.text:080740C7                 jmp     short loc_80740B6
/ x+ {2 E0 v) z6 L' b/ W妖城在线论坛bbs.mocwww.com3 r3 d/ f' |. r% b5 L3 m1 C
粗糙的解释下这段代码的意思 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 m' F4 r: r* A* M
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 n$ D' p! E( Y! ~
Push              edp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, z% L% o3 @% V, s: M6 O& F* M
Mov        ebp,esp
4 o- ?& F# |$ p/ F8 M, P—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov        edx,[ebp+8]
: _5 \- F* y! c) P. N' o. ?魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表获取当前等级的下一级存到edx
7 c" y1 M& ~' M2 ?3 |* L—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
; ?/ J0 C- G* o) L  T' ]魔力私服,最新魔力宝贝私服技术交流Cmp              edx,7eh
9 I1 t! Z: D: I0 K& B; x$ E' S, w; ?魔力私服,最新魔力宝贝私服技术交流将edx与7eh也就是10进制数130比较 妖城在线论坛  t9 B( V# ?  f/ ?' }
bbs.mocwww.com6 _4 k0 s+ s2 R8 b
Jbe         shortloc_80740C0
' E8 M. A/ ^/ d0 P; r8 Z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート如果edx小于7eh则进行跳转到80740C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& @, }' B' C: c/ ]' |

8 G. o: w- @- F  Q4 l" @) a妖城在线论坛Push       ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 t* p! C2 w2 P$ G$ z
Mov        ecx,7 0 G9 [8 P. G* v: M$ S6 `: a2 u3 [3 z
给ecx赋值7
. t% x. M( s$ l( Y- F$ V8 @& ]% {—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート妖城在线论坛" [& x% V1 O( v# x4 {. F5 n+ o* n
Push              edx , D' O& E# ?6 t7 R7 y. l
Mov        eax,edx 妖城在线论坛5 x) x$ Z" Y0 D! W
把当前等级+1的值给eax
- S' v! p3 m1 \0 s$ j' p% W' n妖城在线论坛9 `( ~+ i$ a/ k7 Y
Imul              eax,edx
, w$ F3 Q$ r9 M/ o8 s3 O- f' H4 mbbs.mocwww.com把eax与edx相乘,结果存在eax
; K0 ~7 \- D/ b—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力宝贝私服技术交流9 X, ]) Z/ j' f4 Q
Imul              eax,ecx
# ?! g, r* j* ]: q& h妖城在线论坛把eax与ecx相乘,结果存在eax 2 V0 G. t6 {0 p  `
bbs.mocwww.com* |& N6 U" Z, N: s" n. s
Leave 妖城在线论坛/ x3 G0 W8 k& K2 N" g) d
Retn
% C/ }1 w3 P4 \# ^+ b妖城在线论坛退出这个过程吧,大概 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* l0 h1 t) r' n% A4 n! S8 F
魔力私服,最新魔力宝贝私服技术交流- a/ r2 [. |2 S2 b+ N1 N9 z
Mov        eax,dwordptrLevelUPtbl[edx*4] 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' S" C: a( ~4 A3 @2 a( c/ o
这里是读取经验表的内容给eax,也就是查表读经验 魔力私服,最新魔力宝贝私服技术交流3 \- }4 i" q- \% R' f  m9 i
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: T" P) Q3 A' W! Y' W
jmp     short loc_80740B6
' o. \% f1 ~0 p/ a# N魔力私服,最新魔力宝贝私服技术交流强制跳转到80740B6
6 m' z" g0 t+ O+ j" [$ H妖城在线论坛bbs.mocwww.com6 Z/ ~6 K/ o/ L. T& R
好了,这段代码就这点意思,逻辑上不难理解。
$ P8 z" x: T; J2 o9 D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 2 D9 k( A0 x/ F) G8 L
魔力私服,最新魔力宝贝私服技术交流6 _1 g1 ?3 h' b5 A4 u) {
分析完了之后开始修改了,上面的代码具体作用如下:
) m0 e  |9 o& u: Y# y3 Z+ }* @, T魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表判断等级下一级是否小于7eh,是则跳转到查表。 魔力私服,最新魔力宝贝私服技术交流/ |6 ]( z$ h! r3 f
否的话也就是大于7eh时,按照下面算法运算
7 t5 i& M& N+ c5 y* [bbs.mocwww.com.text:080740A3                 push    ecx
7 u* o4 B& m3 ~  q2 l& O+ Wbbs.mocwww.com.text:080740A4                 mov     ecx, 7 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. Y0 E+ ^: L; p/ R
.text:080740A9                 push    edx
2 o- a# [5 K: ?7 l  A—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AA                 mov     eax, edx bbs.mocwww.com' ^+ [% G  J% z2 M" D9 U7 a& W5 G
.text:080740AC                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; t) O6 t9 D$ j' s
.text:080740AF                 imul    eax, edx
4 ?3 C1 ]# l6 W0 s1 s6 [  L妖城在线论坛.text:080740B2                 imul    eax, ecx
/ p6 m& \# m$ o3 \/ Q2 m: x) u0 x妖城在线论坛也就是eax的三次方乘以ecx,这里可以改成我想要的。 bbs.mocwww.com  d: h" {  |! ]$ w( E3 p  H, m
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. @$ E+ h2 g* X  @0 N
我的目标是改称等级的四次方除以50,但是问题来了。 魔力私服,最新魔力宝贝私服技术交流7 Q+ w1 F2 l$ p+ x2 U1 ^0 }& `9 p
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
1 u0 z- C" a/ n8 |/ E& i
  i. V5 a& {' T.text:08074098                 public CHAR_GetLevelExp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. n; m, I( r2 s: z
.text:08074098 CHAR_GetLevelExp: bbs.mocwww.com0 h2 Z+ d) y+ S/ X/ Y; m
.text:08074098               魔力私服,最新魔力宝贝私服技术交流% `. N8 e4 r5 P# V7 E
.text:08074098                 push    ebp
# |) r. @7 t/ C/ W4 bbbs.mocwww.com.text:08074099                 mov     ebp, esp
5 v1 V" O" W' i& q8 T2 o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409B                 mov     edx, [ebp+8]
$ `3 ^. G, s1 E) C1 D9 y.text:0807409E                 cmp     edx, 0FFh
8 V1 H- ^5 o6 p! J" y8 ebbs.mocwww.com.text:080740A4                 jg      short loc_80740C0 bbs.mocwww.com6 }8 U" Z5 A" t# E, u2 w4 N
.text:080740A6                 push    ecx
% Z! E: \9 ^/ z& p' ^魔力私服,最新魔力宝贝私服技术交流.text:080740A7                 mov     ecx, 32h —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- W) d: `4 h) ?) Q4 ]3 D
.text:080740AC                 push    edx
2 i4 }3 x: ]8 S9 Q7 t( Sbbs.mocwww.com.text:080740AD                 mov     eax, edx bbs.mocwww.com1 e# x! H+ J2 l- V
.text:080740AF                 imul    eax, edx bbs.mocwww.com; S* S4 G8 |  X  g' T5 w" x& |
.text:080740B2                 imul    eax, edx 魔力私服,最新魔力宝贝私服技术交流' u5 E# t# q( T! ]
.text:080740B5                 cdq
% I% U( `( _4 }6 i9 W5 F.text:080740B6                 idiv    ecx
$ G( ]* l. [* Q: s1 F妖城在线论坛.text:080740B8                 mov     edx, [ebp+8]
8 b* B: Z( b3 }魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BB                 imul    eax, edx 魔力私服,最新魔力宝贝私服技术交流" n# M6 O/ k0 c6 j, A. D5 j3 ]$ _
.text:080740BE 魔力私服,最新魔力宝贝私服技术交流: a% t! Z3 q: O% f+ _0 x. v7 B
.text:080740BE locret_80740BE:                     —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート  V6 [, @  q  {8 z; z: L
.text:080740BE                 leave bbs.mocwww.com9 }9 [* f! @% `, X* d' ]
.text:080740BF                 retn
$ y: o- P; y; ibbs.mocwww.com.text:080740C0 loc_80740C0:                        
$ ~& f& e4 \' H+ ?5 r& B/ a.text:080740C0                 mov     eax, 0FFFFFFFFh
* \# D! H1 c  [% b6 {$ U.text:080740C5                 jmp     short locret_80740BE 妖城在线论坛/ V9 J% X6 H0 Y  B/ f. P1 i4 x
bbs.mocwww.com; r7 E5 {4 x0 X( p3 v  Z
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
5 ~9 [" P: V" w' ~8 h, D魔力私服,最新魔力宝贝私服技术交流Cmp              edx,0FFh —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: U. M7 E5 o1 G! `! Z3 D
Jg           shortloc_8074C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 M) K6 ^4 K. O5 Z% Z& M) @0 |5 x7 y
判断等级是否大于255是的话跳转80740C0
# L( r' p( C. `( \# u6 r0 g: R) d魔力私服,最新魔力宝贝私服技术交流否的话进入我们的等级公式: bbs.mocwww.com' {2 k9 r: V- a2 T  O5 Q4 w
(等级*等级*等级除以50)*等级
4 z2 b! ~" Q7 C魔力私服,最新魔力宝贝私服技术交流也就是等级三次方除以50再乘以等级 2 O! G+ Y# j: E8 q% M
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
# M4 [/ j' c# G0 }* l魔力私服,最新魔力宝贝私服技术交流216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
: V8 b! [0 @" `0 z, L7 \妖城在线论坛所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
% k1 k/ ~% J- {* O9 z* a! W魔力私服,最新魔力宝贝私服技术交流
  R4 ^3 Q4 U9 Z% m" t7 f: ?+ O接下去做公式:
: H# D, y( u6 t5 D6 S5 C# C$ n( ~Push              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验
9 |9 A6 m9 B" X0 l1 j2 uMov        eax,edx      将下一等级的值赋值给eax
8 l- z1 s8 K6 ?# R% q2 t5 @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul              eax,edx          将eax,edx相乘,结果存到eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ J. ^  T7 M( Y+ M
Imul              eax,edx          同上
2 @3 U7 l8 Q) S. Fbbs.mocwww.comCdq                             这个做除法不加就会出错,用户登录后服务器当机 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 a% W& N7 E; s4 k' s
Idiv        ecx                eax除以32h算到50倍经验 . @& x0 @7 Q1 \% F& c
Mov        edx,[ebp+8]    从新获取下一等级的值 妖城在线论坛% o5 ]# ~5 h, w0 {
Imul              eax,edx          将eax,edx相乘,结果存到eax bbs.mocwww.com6 g: c$ u: A0 f+ @
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表5 o0 S# s6 Z( N
好了,这样就完成了运算过程。
+ D3 l0 d' z$ [) L; l! v魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力宝贝私服技术交流) f8 U1 _! m. L( |
.text:080740C0 loc_80740C0:                         魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* Q) z0 G+ q$ k* K! W" Q
mov     eax, 0FFFFFFFFh
# k- B4 z4 H; t& Cbbs.mocwww.comjmp     short locret_80740BE —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( p) M1 L; [& t/ D" L
这一段代码就是等级超过你设置的上限之后返回-1。 妖城在线论坛7 @7 s9 j" N% B% D- _
魔力私服,最新魔力宝贝私服技术交流" o0 E3 i3 L+ A& L+ l) f- h

! i% `7 j1 ~* J; W0 E妖城在线论坛下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
0 f' b3 A4 [5 N7 G8 b2 Z4 G魔力私服,最新魔力宝贝私服技术交流这里就要用到FlexHex了。 妖城在线论坛9 N+ b# K9 k8 h# ?

7 q4 V: C* ~- j/ P9 P魔力私服,最新魔力宝贝私服技术交流首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
4 L' `- R+ C5 r1 ]; w! U" l: {0 \魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表如下对应:
9 j. k4 [- I4 R( u7 B9 `Cmp              edx,0ffh                       81  FA  FF  00  00  00
7 X7 p, r# m, x# ?' C$ \" R魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表jg      short loc_80740C0         71  FA 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 `% B: j  e  L! [0 v  H, s# X2 f
mov     ecx, 32h                      B9  32  00  00  00 魔力私服,最新魔力宝贝私服技术交流1 {; v( k* {3 x+ M. k

$ S& s6 Q$ R6 [- }/ T7 O. l依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
- K* r/ S$ k7 I' V2 c* l/ @0 k这个挺有乐趣可以自己慢慢享受摸索。
6 x3 t7 G: i3 x* x# v妖城在线论坛妖城在线论坛" ?  d# V. ]7 U. u$ h7 t
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

好文章, 可以帮很多入门的来修改~

TOP

看不懂.............

TOP

学习学习魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 i: F+ j# _4 n* f- [
谢谢楼主分享经验

TOP

感谢楼主分享,顶!

TOP

很不错~呵呵~ 继续深入,到call语句的调整和为自己的语句腾空间还有搜索无果而必须自己对着opcodes写机器码就有趣了……

TOP

发新话题