发新话题
打印

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

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

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
! d$ L; k; ?6 S- G' W魔力私服,最新魔力宝贝私服技术交流使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 A7 S' V% o: K; ?

0 a! F6 x2 U4 H- c, @) H用IDA载入gmsv,分析完成后进入Exports选项卡。 妖城在线论坛5 J* Y) \0 \2 P" R8 d
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
% {* P5 g' i5 W# ?" D4 F/ y- C' {魔力私服,最新魔力宝贝私服技术交流.text:08074098                 public CHAR_GetLevelExp 妖城在线论坛/ P9 Z* D+ x% b- a) Z) U( [1 M2 X
.text:08074098 CHAR_GetLevelExp: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) E: X3 b% u" Z$ N3 A
.text:08074098                 push    ebp
+ Q' s) C/ d3 N9 m* M3 i+ I魔力私服,最新魔力宝贝私服技术交流.text:08074099                 mov     ebp, esp 妖城在线论坛; m; v" C/ ^2 d  V- f" u" b
.text:0807409B                 mov     edx, [ebp+8]
& A, F, _5 ^# n: A- r% ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409E                 cmp     edx, 7Eh
0 X1 J1 n) ?  {' I6 H& Y, M1 c魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A1                 jbe     short loc_80740C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表5 f- O: z7 _+ }. K
.text:080740A3                 push    ecx
) x7 [  G1 z) m& f  cbbs.mocwww.com.text:080740A4                 mov     ecx, 7 魔力私服,最新魔力宝贝私服技术交流* C6 n7 C2 P$ J0 p) S- p1 j
.text:080740A9                 push    edx 8 [* j6 C' w3 h9 M  W
.text:080740AA                 mov     eax, edx
. l4 U5 u2 r; x4 W0 B; U.text:080740AC                 imul    eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 M' i0 v8 K; \  w4 }& J
.text:080740AF                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. c& `" A3 n5 W
.text:080740B2                 imul    eax, ecx , B5 k0 ]1 A* v8 a1 L
.text:080740B6 loc_80740B6:   
1 D, b6 c( b* a魔力私服,最新魔力宝贝私服技术交流.text:080740BE                 leave
4 ]  g0 w9 f0 R8 p—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BF                 retn 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. @/ M8 ?8 F5 r5 y- l
.text:080740C0 loc_80740C0:                           —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 V1 ]% u6 O( C) V% ?' M" Z, |
.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4]
+ F; y( _3 d- |  t' U+ E, k- q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C7                 jmp     short loc_80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. w. I( P2 C$ J1 Z# ^

! L! e8 x2 F, ~2 q: x. sbbs.mocwww.com粗糙的解释下这段代码的意思
/ O7 @) }! C+ ^* S妖城在线论坛
1 Z' J2 z8 M; x) mPush              edp
5 T: G( u6 V7 y. Abbs.mocwww.comMov        ebp,esp
! D9 B2 M& I  M" W1 r+ g9 E魔力私服,最新魔力宝贝私服技术交流Mov        edx,[ebp+8]
9 H% a  O6 {0 _0 H获取当前等级的下一级存到edx
5 h! s! ?* R% B7 ]" F) K1 L* B妖城在线论坛
: q' Q: |5 A3 v: C魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp              edx,7eh 魔力私服,最新魔力宝贝私服技术交流) p) Q4 C( p9 w
将edx与7eh也就是10进制数130比较 妖城在线论坛4 a* [  n) j9 {& s4 _

5 [# x+ I- R  T  f9 J魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Jbe         shortloc_80740C0
7 c4 f7 r3 P' x2 r, t+ u如果edx小于7eh则进行跳转到80740C0
& T) {, I$ K7 I& d. b妖城在线论坛5 Y- o& j1 ?2 W* C1 Q; [" h: I4 t* x
Push       ecx bbs.mocwww.com. k! S1 A+ N* I7 s
Mov        ecx,7
! w( L* Z  H6 Q7 Q+ g. Y魔力私服,最新魔力宝贝私服技术交流给ecx赋值7 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. E  U0 w5 U8 E2 k0 i
; t4 Y  i" b$ J  [6 P* o+ I
Push              edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( |: Y% Z  J/ D/ ~% K( _! `+ f
Mov        eax,edx 妖城在线论坛" Y; v5 A2 ^, w& a
把当前等级+1的值给eax
9 c3 T) L( F. i. f! }  d—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
, v4 w# k; v3 L- R+ gbbs.mocwww.comImul              eax,edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 e2 f6 A" W# {0 m
把eax与edx相乘,结果存在eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 U0 Q+ Q0 I( U1 E

/ r- U2 F. ~* o, z: f魔力私服,最新魔力宝贝私服技术交流Imul              eax,ecx % Y* x+ C7 i/ B% F  a! j# m
把eax与ecx相乘,结果存在eax 妖城在线论坛& G+ l5 _4 r- z$ x0 H! {

' z: f3 V8 `5 d) ybbs.mocwww.comLeave
- h: i* Y! o, M妖城在线论坛Retn
! v' {9 V5 F& a; ]; l魔力私服,最新魔力宝贝私服技术交流退出这个过程吧,大概
# v8 z$ w( D  G—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力宝贝私服技术交流9 ~2 |5 @5 o: q4 J  N2 B# Z  ]1 v" f
Mov        eax,dwordptrLevelUPtbl[edx*4] $ f7 G# s! H% w5 e' T! K
这里是读取经验表的内容给eax,也就是查表读经验
7 N% P) _' }# U0 c—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# e1 V: Y; @' A3 X" F" L! R
jmp     short loc_80740B6 魔力私服,最新魔力宝贝私服技术交流* Q3 d- D5 C6 z' q
强制跳转到80740B6 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 _+ e% l7 H1 z0 r$ \3 ]# b
4 ]! A% F' m3 Y: r7 B- l5 X
好了,这段代码就这点意思,逻辑上不难理解。 魔力私服,最新魔力宝贝私服技术交流5 p% {0 s4 y. o0 E
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 : o$ E2 U9 k' ]# _; B0 G- ~$ }
bbs.mocwww.com+ J0 X8 K' C+ L6 H6 I$ v
分析完了之后开始修改了,上面的代码具体作用如下: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 m- p5 d, U9 ~1 `. [3 x
判断等级下一级是否小于7eh,是则跳转到查表。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% w! h& O* s2 w2 w9 n
否的话也就是大于7eh时,按照下面算法运算 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% d$ z0 R# M" x3 t# x! j& N! v: F
.text:080740A3                 push    ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 {" `2 a  P9 H, B' y
.text:080740A4                 mov     ecx, 7
  i6 b- z& Z$ D) ^.text:080740A9                 push    edx
: r0 h) E3 b* T7 W0 e( \.text:080740AA                 mov     eax, edx
! o/ g. S# J! @& U4 o  n1 r—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AC                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 X4 k4 ]) ^, L( Z9 s% o3 o. Q
.text:080740AF                 imul    eax, edx
% V2 s- n8 O/ x$ r魔力私服,最新魔力宝贝私服技术交流.text:080740B2                 imul    eax, ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ e  f! q" W6 v' {0 T. K
也就是eax的三次方乘以ecx,这里可以改成我想要的。 妖城在线论坛6 ~0 X8 }9 X' S' m& C

- W' K- T* G, B% M+ [我的目标是改称等级的四次方除以50,但是问题来了。
9 ?+ ?7 N( E" I. i! O魔力私服,最新魔力宝贝私服技术交流怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
1 S8 |% T, o) c4 S7 q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
% P8 q! Y5 e- o9 a妖城在线论坛.text:08074098                 public CHAR_GetLevelExp
( i9 m, ^5 O- F# C魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074098 CHAR_GetLevelExp: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- ^& ~9 ^) Z" }* u' T5 d" p9 a
.text:08074098               
$ p: R: n9 C( m, R3 D0 Wbbs.mocwww.com.text:08074098                 push    ebp
/ R% y5 _  b; C5 ~( y2 I' x2 C0 K) d妖城在线论坛.text:08074099                 mov     ebp, esp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 \. h* e# R+ M; E( v2 K8 r9 B
.text:0807409B                 mov     edx, [ebp+8]
  _5 x' ?/ l( _妖城在线论坛.text:0807409E                 cmp     edx, 0FFh
0 H( S2 [; n% H.text:080740A4                 jg      short loc_80740C0 妖城在线论坛( _* S% k; C" `) w9 @  G
.text:080740A6                 push    ecx
3 A7 @% f: s3 S.text:080740A7                 mov     ecx, 32h bbs.mocwww.com% K& T6 R) a$ i# c7 W
.text:080740AC                 push    edx
6 V5 c3 g5 p* w- B- A/ Y.text:080740AD                 mov     eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 h3 H# O2 o) N3 m( x* \! x( ]
.text:080740AF                 imul    eax, edx 魔力私服,最新魔力宝贝私服技术交流) ]$ e. I: p' z- r
.text:080740B2                 imul    eax, edx bbs.mocwww.com9 ?4 H- a% E; l6 z9 v, X/ g
.text:080740B5                 cdq
& _0 c0 i) @* ~# c0 O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B6                 idiv    ecx
9 V2 L4 a" ?, |( m! i, Y妖城在线论坛.text:080740B8                 mov     edx, [ebp+8] 4 U/ {# R( @. f. Z
.text:080740BB                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 K$ w7 H, w% z6 X- j! p
.text:080740BE 魔力私服,最新魔力宝贝私服技术交流! X6 i- R' p  x' X2 w. Q
.text:080740BE locret_80740BE:                     
) d/ q9 @7 z4 V8 b5 J+ d( h* C妖城在线论坛.text:080740BE                 leave bbs.mocwww.com5 B' N/ G8 m2 X* i* z, t
.text:080740BF                 retn —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! d- r, S5 O6 l/ E, e% }
.text:080740C0 loc_80740C0:                         魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 I% P% |: O5 ^# v* d
.text:080740C0                 mov     eax, 0FFFFFFFFh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* O6 ^* w- l4 E
.text:080740C5                 jmp     short locret_80740BE
& ~' O1 L0 R: V5 a* C0 d9 ybbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; U5 o% b. V4 T
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
6 l5 K  G. j* O4 ~/ J/ O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp              edx,0FFh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ G7 @( i( F' w9 v9 K9 D8 m7 p
Jg           shortloc_8074C0 魔力私服,最新魔力宝贝私服技术交流* w. u9 n0 _, ~
判断等级是否大于255是的话跳转80740C0
$ G9 Z! P5 b+ y' V, l. N否的话进入我们的等级公式: 妖城在线论坛# G# b- S, o  |/ ^. |/ X$ J) P
(等级*等级*等级除以50)*等级 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表) s" |. F8 W$ b4 W" O) Q
也就是等级三次方除以50再乘以等级 4 q* n4 {7 s+ H. z
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 bbs.mocwww.com$ {4 t8 k' M0 y& `
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 魔力私服,最新魔力宝贝私服技术交流2 Y& \' w  {, y4 X) U# m5 [
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
! [( n* X+ R  _, G妖城在线论坛
# E5 j+ Q' ^9 V" L) g. Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表接下去做公式: 妖城在线论坛/ R; O& R2 m" _) W9 V
Push              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验 % J7 Q8 h2 A( g6 S; o% G
Mov        eax,edx      将下一等级的值赋值给eax 妖城在线论坛2 W5 p) Y5 T% V7 h' Q
Imul              eax,edx          将eax,edx相乘,结果存到eax 1 \: J  u1 K9 x2 Q
Imul              eax,edx          同上 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 q* ]0 e6 Q6 [: h# g
Cdq                             这个做除法不加就会出错,用户登录后服务器当机
; O) O" _1 K- H1 Ybbs.mocwww.comIdiv        ecx                eax除以32h算到50倍经验
$ k' t% |# v0 o% }0 b) ]. T魔力私服,最新魔力宝贝私服技术交流Mov        edx,[ebp+8]    从新获取下一等级的值 bbs.mocwww.com9 |1 M2 c* R  }3 E: i. t8 Y
Imul              eax,edx          将eax,edx相乘,结果存到eax
* Y# q* L* Z: V" b# k& [3 a& X+ rbbs.mocwww.com5 H- [3 R: Y0 _5 x+ I
好了,这样就完成了运算过程。
& k# G. e; A0 ~% t- D5 r
% l& l* j! Q- `# \: m.text:080740C0 loc_80740C0:                         : y; ]  |+ a  z5 r) R( p+ J  Z
mov     eax, 0FFFFFFFFh
7 z* e! G2 d5 O, {4 r魔力私服,最新魔力宝贝私服技术交流jmp     short locret_80740BE
* w7 y: B# T) m  F魔力私服,最新魔力宝贝私服技术交流这一段代码就是等级超过你设置的上限之后返回-1。 # o: |( V1 w( z' N$ J3 x
bbs.mocwww.com; ?# N) u* L2 l- X8 p1 c. H
魔力私服,最新魔力宝贝私服技术交流' `" s7 M, |* B7 M7 |
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 魔力私服,最新魔力宝贝私服技术交流4 p. `0 x7 P: k% b6 N
这里就要用到FlexHex了。 bbs.mocwww.com! [% {: _  F, ~& \! }/ v8 X

' C! v" @  R* r! z# Y6 u6 @魔力私服,最新魔力宝贝私服技术交流首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 L# h8 m" I# V# S: d
如下对应: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 K& |- N$ r8 I. W
Cmp              edx,0ffh                       81  FA  FF  00  00  00
) }* g5 N" U$ i' r/ Hbbs.mocwww.comjg      short loc_80740C0         71  FA
2 n7 L# l9 [0 \) ^8 a6 {* d魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表mov     ecx, 32h                      B9  32  00  00  00
  G# P# n6 m7 ~bbs.mocwww.com
/ V% B9 y2 V7 _1 \bbs.mocwww.com依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 魔力私服,最新魔力宝贝私服技术交流) c6 I* f- @/ @$ F
这个挺有乐趣可以自己慢慢享受摸索。 ; W1 W( a1 P9 r* W, a* n; ?3 t
* e  X8 m6 s0 p
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

发新话题