发新话题
打印

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

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

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 魔力私服,最新魔力宝贝私服技术交流8 s; b5 G1 w3 x) i" f% F3 L0 }
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
: f* \1 m. \: \+ J9 \% m魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
3 J+ k% ~) c7 R妖城在线论坛用IDA载入gmsv,分析完成后进入Exports选项卡。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 \" H7 ^9 K$ N3 ]/ P
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
/ C1 B& ~. s$ @% I) Fbbs.mocwww.com.text:08074098                 public CHAR_GetLevelExp
" f! m  u" t7 B+ Q+ e' `妖城在线论坛.text:08074098 CHAR_GetLevelExp:
# r8 s& o& H( F& @0 n.text:08074098                 push    ebp
; |- X! O+ u# `* _  G魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074099                 mov     ebp, esp
: D. R! |, N7 v1 t; y6 {妖城在线论坛.text:0807409B                 mov     edx, [ebp+8] 魔力私服,最新魔力宝贝私服技术交流1 b# A0 r. ^& Q
.text:0807409E                 cmp     edx, 7Eh * J6 s; d8 D0 \$ s+ s5 @; w, m
.text:080740A1                 jbe     short loc_80740C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 y; U1 b' C5 q) v5 A1 K+ P
.text:080740A3                 push    ecx
1 R" S# y5 F2 N8 G8 J! n魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A4                 mov     ecx, 7
0 m9 _; M8 V# H4 M/ _+ h2 d魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A9                 push    edx
0 W+ ~' P+ V2 I" K& K妖城在线论坛.text:080740AA                 mov     eax, edx
  ]2 Q) ^$ ?' ]; ~8 n0 e.text:080740AC                 imul    eax, edx
8 }' o' i& v' A8 {" W& X( z, u魔力私服,最新魔力宝贝私服技术交流.text:080740AF                 imul    eax, edx 魔力私服,最新魔力宝贝私服技术交流/ k  |: ]& ?  e8 L
.text:080740B2                 imul    eax, ecx
- X" T7 j1 a$ e9 e.text:080740B6 loc_80740B6:   魔力私服,最新魔力宝贝私服技术交流. [' n  \6 s- Y. S  Q
.text:080740BE                 leave
/ z* g2 m4 l$ @bbs.mocwww.com.text:080740BF                 retn 妖城在线论坛3 F, E& g5 s. R/ V$ T8 _8 w& d
.text:080740C0 loc_80740C0:                           
/ d( E$ K1 \- ?/ a5 T8 m魔力私服,最新魔力宝贝私服技术交流.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4] 魔力私服,最新魔力宝贝私服技术交流& C. K  W+ h* Z; t
.text:080740C7                 jmp     short loc_80740B6
7 _7 W/ R. _) f7 R8 dbbs.mocwww.com
# g8 C/ |" U! Z7 z" x% A妖城在线论坛粗糙的解释下这段代码的意思
1 E; c; K, e1 H+ H/ ?6 ?/ Dbbs.mocwww.com
, C. j# m1 k& J2 J2 gPush              edp
8 [& v/ ?: ~; Y# W# L& RMov        ebp,esp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 I4 B2 ^5 r) h- t2 S( Y" k
Mov        edx,[ebp+8]
9 x7 O4 L4 s2 s4 x" q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート获取当前等级的下一级存到edx 妖城在线论坛/ d% g: Y  w# H, H) F: f

& P( w7 H2 p( m—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートCmp              edx,7eh , \! k/ s$ q4 m: r$ _* d
将edx与7eh也就是10进制数130比较
# c* e* V6 _2 B" M* B( J9 w妖城在线论坛
) P& X  [% o! WJbe         shortloc_80740C0
# k% w9 ~1 g* s  R- E- C5 a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表如果edx小于7eh则进行跳转到80740C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 c, E% f( D5 ^& S4 j
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表5 J& o& J1 V6 t/ s, z8 \: G
Push       ecx
4 l: |" h: H" I; y魔力私服,最新魔力宝贝私服技术交流Mov        ecx,7 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' |) z" i+ F+ p5 M9 M3 `# I
给ecx赋值7
' Y* t! @$ W3 ?" n8 I( n* U$ h$ P. Y魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力宝贝私服技术交流2 u+ D( y% ^9 W. w
Push              edx
. j* N& `2 k, R/ b/ B—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov        eax,edx bbs.mocwww.com) n0 K# {0 |' K  s2 b: s* y. a
把当前等级+1的值给eax
' @. J6 f. `$ I3 A/ X) \
6 ^' Q7 X% T5 o3 h3 k魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul              eax,edx
* w# N* k( Y: M魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表把eax与edx相乘,结果存在eax 魔力私服,最新魔力宝贝私服技术交流6 ~& i" C8 N, p" D( n8 [
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 Y; ]6 S) v) B5 A& r  e
Imul              eax,ecx
& W! C4 s& l1 K' t$ f  W! `+ N魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表把eax与ecx相乘,结果存在eax
' h$ D' V1 b$ p# j- z% S' ~妖城在线论坛—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- Q) U# ?$ I0 E* }+ W# W/ P
Leave 魔力私服,最新魔力宝贝私服技术交流3 ?% f# _( v! K* t
Retn
3 j& j3 U8 I, V. C% ~4 \! Q9 ~bbs.mocwww.com退出这个过程吧,大概 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. c7 h' \8 q! l' |4 n
bbs.mocwww.com  n3 l9 o/ ^' k5 Y# ^; N
Mov        eax,dwordptrLevelUPtbl[edx*4]
4 ]: R& @; M3 [1 d2 L魔力私服,最新魔力宝贝私服技术交流这里是读取经验表的内容给eax,也就是查表读经验 妖城在线论坛* z& Y1 f( w7 I$ m
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 |- u% Y3 j# i9 h2 f7 K
jmp     short loc_80740B6
% p( f* P, a; C) m* K妖城在线论坛强制跳转到80740B6 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# ], m  G# L9 a+ n5 J% S5 ]

) A8 J- v2 V$ B5 o2 g+ y! _魔力私服,最新魔力宝贝私服技术交流好了,这段代码就这点意思,逻辑上不难理解。 bbs.mocwww.com/ j6 c- k3 `! f! o
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
2 @: M1 l* ?5 ?7 x* ~bbs.mocwww.com
+ V6 Z- R5 ~7 u# `4 }分析完了之后开始修改了,上面的代码具体作用如下: 魔力私服,最新魔力宝贝私服技术交流" }" T$ H* \4 x2 x) M% y5 c
判断等级下一级是否小于7eh,是则跳转到查表。 魔力私服,最新魔力宝贝私服技术交流/ K+ u. f6 X8 M: ~- c3 ~
否的话也就是大于7eh时,按照下面算法运算 魔力私服,最新魔力宝贝私服技术交流- _6 `0 m& E) t$ z& {! M
.text:080740A3                 push    ecx
) f# r1 @6 z) Q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A4                 mov     ecx, 7 魔力私服,最新魔力宝贝私服技术交流- K, l+ t$ Q) @7 O
.text:080740A9                 push    edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 U" K. Y4 m7 Q
.text:080740AA                 mov     eax, edx
: o$ ?# ~/ [- ~, m  \$ _( _bbs.mocwww.com.text:080740AC                 imul    eax, edx
! L# Q6 z! P9 v+ z$ U5 qbbs.mocwww.com.text:080740AF                 imul    eax, edx
/ b0 S3 N8 I# C( @3 }( v& G.text:080740B2                 imul    eax, ecx 妖城在线论坛5 v2 v  H  Y: U  C, l4 p2 x
也就是eax的三次方乘以ecx,这里可以改成我想要的。
! D1 ]3 J: e8 [+ r$ k
/ N0 l' r# z- @6 U: J7 w# p" |! }—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート我的目标是改称等级的四次方除以50,但是问题来了。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 o! F5 Q. c5 C' o6 k, M& |
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 bbs.mocwww.com( k8 y) ~. p5 V2 Q
妖城在线论坛9 s- [1 ]; u9 h% r  w6 \. p
.text:08074098                 public CHAR_GetLevelExp 妖城在线论坛0 H+ y5 Z" N. j
.text:08074098 CHAR_GetLevelExp: 1 a4 \, J% X3 p
.text:08074098               
, V( T# Z! Y! l/ o0 X2 r- D& T.text:08074098                 push    ebp
* \# I6 k; J6 E" M' W.text:08074099                 mov     ebp, esp
' A/ i) n6 ?. ~  L8 T  a9 A—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409B                 mov     edx, [ebp+8] 妖城在线论坛5 o" g) m# {% u) M3 Y
.text:0807409E                 cmp     edx, 0FFh bbs.mocwww.com0 w* q' w" `9 R- O
.text:080740A4                 jg      short loc_80740C0
0 r) s2 V  U+ v5 J+ C妖城在线论坛.text:080740A6                 push    ecx
% h0 S7 g6 t. P3 G0 @3 Ubbs.mocwww.com.text:080740A7                 mov     ecx, 32h —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ Q$ H' v. t- F
.text:080740AC                 push    edx
& S7 {5 C* d5 a/ ]3 a—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AD                 mov     eax, edx
  a# C" Q& h( u: g& p& T3 w- z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AF                 imul    eax, edx 妖城在线论坛9 q  w8 }5 M, t* A- {+ ]
.text:080740B2                 imul    eax, edx
- z0 C; h2 @5 f$ t) }4 ]妖城在线论坛.text:080740B5                 cdq
/ g$ [. }" w3 `+ t4 {* ?: p$ L. K.text:080740B6                 idiv    ecx
0 p- k7 J) N+ k: F.text:080740B8                 mov     edx, [ebp+8]
- H& ?% E3 U$ d( Z% Q, v9 F% @9 [bbs.mocwww.com.text:080740BB                 imul    eax, edx 魔力私服,最新魔力宝贝私服技术交流. H# C6 K) N8 J( z" J' c" e4 ^7 `& D
.text:080740BE
- L% `$ |9 A8 K# ^( S1 D—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BE locret_80740BE:                     
7 s3 ]. r# m0 X$ j4 j: q1 k5 w' Lbbs.mocwww.com.text:080740BE                 leave
4 h8 i7 ^0 Y" y% n% }$ B9 {2 Y* h魔力私服,最新魔力宝贝私服技术交流.text:080740BF                 retn 魔力私服,最新魔力宝贝私服技术交流& _/ H8 w1 X3 A8 Z7 [1 u
.text:080740C0 loc_80740C0:                         妖城在线论坛: k  W1 B+ v. i  [% d/ f$ S
.text:080740C0                 mov     eax, 0FFFFFFFFh
" M2 Q! _7 `3 }" w9 m4 a) W5 n魔力私服,最新魔力宝贝私服技术交流.text:080740C5                 jmp     short locret_80740BE 魔力私服,最新魔力宝贝私服技术交流) a# u9 A* Q- p

$ X: s" u% n1 o方便起见这里直接把我改好的代码贴出来,与原来不同的地方: 妖城在线论坛. l* p* `( t' V4 M# J
Cmp              edx,0FFh 魔力私服,最新魔力宝贝私服技术交流: F7 S' S$ F, p6 O, B$ H
Jg           shortloc_8074C0
, U" j4 F' G4 e! d魔力私服,最新魔力宝贝私服技术交流判断等级是否大于255是的话跳转80740C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# I; E! {# _+ q. e+ ^1 J1 d* N
否的话进入我们的等级公式: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 v! V2 ^( M$ L8 }0 n
(等级*等级*等级除以50)*等级
3 S. L$ k4 p1 u" Q- [/ K2 Tbbs.mocwww.com也就是等级三次方除以50再乘以等级 0 A/ j0 O$ J) T, ?% y9 r
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 , k+ q2 h+ r9 [2 ^
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
; B; |9 `% U1 z- t  `5 b; y妖城在线论坛所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 m+ _) z% P& V/ c) x/ \) K
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 \0 ^0 V7 @4 B7 d; }) E
接下去做公式: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 W5 k5 i9 p1 v6 _: w+ |0 r5 l
Push              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验 魔力私服,最新魔力宝贝私服技术交流" a9 _, ~: s0 A5 k$ g+ n
Mov        eax,edx      将下一等级的值赋值给eax
( O% p5 q8 A" ~0 R妖城在线论坛Imul              eax,edx          将eax,edx相乘,结果存到eax
) v. `7 _* s  r) Abbs.mocwww.comImul              eax,edx          同上 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: T6 v6 q8 a; @% K) c9 [& t$ J
Cdq                             这个做除法不加就会出错,用户登录后服务器当机 ' V  ^0 s0 [5 y0 l! W
Idiv        ecx                eax除以32h算到50倍经验
* p9 Y2 E) n: ^: U  z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov        edx,[ebp+8]    从新获取下一等级的值
. c5 S2 U% C! w" E" L& C1 T; qImul              eax,edx          将eax,edx相乘,结果存到eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表  n- G2 @; E, w, Y

- _( A  C' B( a2 [. N5 m( S" n—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート好了,这样就完成了运算过程。 bbs.mocwww.com9 J0 o" \  k% e3 X# p
bbs.mocwww.com& V; Z: V; K, x# d' G* t
.text:080740C0 loc_80740C0:                        
0 R' }! |9 _, w" ?( abbs.mocwww.commov     eax, 0FFFFFFFFh bbs.mocwww.com; a1 y& W# l1 s/ a. W$ @0 Z) }
jmp     short locret_80740BE
1 @5 F5 _# h  {, I/ O9 b5 n—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这一段代码就是等级超过你设置的上限之后返回-1。 # Y) M, O! _3 e+ {5 }3 U

' u' J0 |+ Q, ^: J( r妖城在线论坛魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ E7 A# b4 i: e6 n9 v6 v- D% M
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 妖城在线论坛4 r- I/ z4 ?) g5 v1 ?
这里就要用到FlexHex了。 6 C4 j; J7 \  h) R/ R, ^, P

' V. X6 X3 y0 w3 c- K. m" t' K; I; _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 bbs.mocwww.com- b# ]/ M; S) _) C5 Z) G* Y
如下对应: 妖城在线论坛+ A; |1 U2 @' y9 y1 h% O; l% X+ `7 u
Cmp              edx,0ffh                       81  FA  FF  00  00  00 7 h  t6 r( ~& y( r: U: q
jg      short loc_80740C0         71  FA
& J0 S" N4 W$ C  ^% s—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートmov     ecx, 32h                      B9  32  00  00  00
' w. Q# {: z. n, k5 o妖城在线论坛bbs.mocwww.com2 }+ D+ N' `6 M% {$ X! P
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 bbs.mocwww.com* l. u4 T% F' z- J- N7 r8 _
这个挺有乐趣可以自己慢慢享受摸索。 bbs.mocwww.com7 T# N: P* z% p. J* ^5 b. N
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) Z* ]  r  [" K& G
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

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

TOP

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

TOP

学习学习魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- s7 T7 ~3 b( Q) L+ T! C
谢谢楼主分享经验

TOP

感谢楼主分享,顶!

TOP

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

TOP

发新话题