Board logo

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

作者: zaozao    时间: 2009-7-19 11:31     标题: 没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 bbs.mocwww.com: G8 f4 i" }4 e. H
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
8 r4 M( z6 i+ C魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表魔力私服,最新魔力宝贝私服技术交流# h5 F, _" A- j+ Z( H
用IDA载入gmsv,分析完成后进入Exports选项卡。 妖城在线论坛& f7 {4 N' k+ l3 r- _
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
5 `+ t( u- Q4 }3 \! s; X- A魔力私服,最新魔力宝贝私服技术交流.text:08074098                 public CHAR_GetLevelExp
5 f1 ~0 _8 H4 q1 m4 j妖城在线论坛.text:08074098 CHAR_GetLevelExp:
7 T. F+ ^1 b% ~3 Dbbs.mocwww.com.text:08074098                 push    ebp bbs.mocwww.com* l5 c: z' g& U; m2 g* ~
.text:08074099                 mov     ebp, esp bbs.mocwww.com3 R5 @# y9 X) s# ]4 a
.text:0807409B                 mov     edx, [ebp+8] 妖城在线论坛# J; I6 Z- W* t1 r! L8 D1 B. b' e
.text:0807409E                 cmp     edx, 7Eh
# [  P& z7 r7 h& E6 u6 k' @妖城在线论坛.text:080740A1                 jbe     short loc_80740C0
- B6 {& `1 H" l+ v/ }6 f, d妖城在线论坛.text:080740A3                 push    ecx
8 w9 o2 L# ]1 P4 F1 cbbs.mocwww.com.text:080740A4                 mov     ecx, 7
$ C7 @4 O* l" Y. e' R4 j1 v+ i.text:080740A9                 push    edx
( Y. d# \: N' W.text:080740AA                 mov     eax, edx
) }8 P! h/ X  f' b.text:080740AC                 imul    eax, edx
+ T0 Z1 D. h& W* _2 E6 Z/ G妖城在线论坛.text:080740AF                 imul    eax, edx
* U2 E7 w8 _  S  h8 L- R魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B2                 imul    eax, ecx
* X( ?5 Y6 C8 g% c' ]! E3 C. {妖城在线论坛.text:080740B6 loc_80740B6:   bbs.mocwww.com* A3 Z; }0 p# w
.text:080740BE                 leave
0 X; k; t1 L1 `3 w9 ~  E: A.text:080740BF                 retn
5 [5 ]1 ?/ k: Y5 d9 F9 B.text:080740C0 loc_80740C0:                           
3 Y: g; r9 `4 U6 J- q4 Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4]
9 O; k' A3 Q, ?.text:080740C7                 jmp     short loc_80740B6 妖城在线论坛  B5 M4 C1 y- d3 C" G
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) Z; }9 f, Y. V1 J: s6 V' b
粗糙的解释下这段代码的意思 bbs.mocwww.com4 f$ c/ z4 N) U
bbs.mocwww.com$ l8 [5 C; F! n
Push              edp & k/ e+ S  ?) m6 L
Mov        ebp,esp
& Z& z6 E# l. t# M5 j, b, X7 F魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov        edx,[ebp+8] 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, B% s, o0 J, y- N* z7 r* b
获取当前等级的下一级存到edx bbs.mocwww.com2 x8 g: `" R5 d7 L! H; k2 K& p
魔力私服,最新魔力宝贝私服技术交流) h9 Z! x" n: W2 X6 D3 p+ A
Cmp              edx,7eh
9 |2 o. }- e5 i5 |; C) W6 j  Y妖城在线论坛将edx与7eh也就是10进制数130比较 魔力私服,最新魔力宝贝私服技术交流# g. Y2 f& R9 C3 f; T% @

& ?+ P# p) g2 R. r8 x—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートJbe         shortloc_80740C0   b, _3 ^3 D7 f% H- Z9 s/ M8 g1 o
如果edx小于7eh则进行跳转到80740C0
2 O* r# p9 f2 e4 g5 n. z# E—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
. k8 v9 f% ?  e! ]1 E* @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush       ecx
* }' N( a. j/ [7 x) w& D* qMov        ecx,7
* X3 T; G: e7 b) T7 u5 c8 J) y给ecx赋值7 bbs.mocwww.com+ v+ t& ^5 L8 q9 ], G6 q

1 I; o/ {8 b" k. Y% fbbs.mocwww.comPush              edx bbs.mocwww.com5 W' y( _" ^' {9 Y, G
Mov        eax,edx 妖城在线论坛1 s9 l1 Q8 U& E1 H1 t% E3 `5 U% i
把当前等级+1的值给eax 妖城在线论坛8 P* M8 K' y1 A; a
: ^: f6 r$ D5 I& }
Imul              eax,edx bbs.mocwww.com5 [5 B" T7 u/ Q: W
把eax与edx相乘,结果存在eax
& c0 k9 U! x8 }, X" D3 Y: W魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
; \4 _* T( h/ F1 l& `3 @1 dbbs.mocwww.comImul              eax,ecx
7 x$ s. K; @+ r0 f* Cbbs.mocwww.com把eax与ecx相乘,结果存在eax ) G& K, O% @. e
魔力私服,最新魔力宝贝私服技术交流  `2 I) l/ M1 K! v0 P- L
Leave
5 Z+ M8 X5 [3 e$ o7 N魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Retn
  J& H" j, T8 V4 F- }, k魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表退出这个过程吧,大概 5 v- k# _, q$ @
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* R# I: y/ @; x" e) d/ S8 a$ {' v
Mov        eax,dwordptrLevelUPtbl[edx*4] bbs.mocwww.com+ P. P4 ?% m" q8 e$ z; G& O% ?
这里是读取经验表的内容给eax,也就是查表读经验
4 f$ I  m5 i: s" V6 u魔力私服,最新魔力宝贝私服技术交流
% l& j1 `& C0 V4 Zjmp     short loc_80740B6 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* u. x- I; d( I6 \; L
强制跳转到80740B6
! c% c3 c3 n  l# e' B' j妖城在线论坛
3 y- F, w" m6 S8 J( l3 T$ U* Y7 V好了,这段代码就这点意思,逻辑上不难理解。
9 R' }3 q. [; M  t% h虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
+ z% @4 S8 Y  ?6 Rbbs.mocwww.com
2 I: W! H9 j1 S4 I9 h2 z- I魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表分析完了之后开始修改了,上面的代码具体作用如下: bbs.mocwww.com0 B  M7 ]4 ?8 [$ U' D  {
判断等级下一级是否小于7eh,是则跳转到查表。 , [1 a( @) @8 q3 c& E
否的话也就是大于7eh时,按照下面算法运算
) ^8 e  q" L. b, fbbs.mocwww.com.text:080740A3                 push    ecx " P$ l. u, s: Y& C" [& x
.text:080740A4                 mov     ecx, 7
" L" n! q8 ?: X+ D" `.text:080740A9                 push    edx
8 O( l* w4 }, e3 @  Q2 a9 a3 \9 k$ Qbbs.mocwww.com.text:080740AA                 mov     eax, edx
" }2 q% v/ c3 P魔力私服,最新魔力宝贝私服技术交流.text:080740AC                 imul    eax, edx
$ W& x5 G" X& c; [- {6 Y.text:080740AF                 imul    eax, edx & ~' G4 ^; f) K! N6 ], J
.text:080740B2                 imul    eax, ecx bbs.mocwww.com7 t0 O/ v% L) t. y4 e, a+ C
也就是eax的三次方乘以ecx,这里可以改成我想要的。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 {4 Y  R  Y* Z: c

" i  ?3 {8 N9 C" [( X我的目标是改称等级的四次方除以50,但是问题来了。
( Z! K  S' f% z5 i8 c, N, z5 O魔力私服,最新魔力宝贝私服技术交流怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 魔力私服,最新魔力宝贝私服技术交流/ q, g% t) X  @# Z+ {. u0 B
妖城在线论坛( K5 n: P$ g& [# L9 Y
.text:08074098                 public CHAR_GetLevelExp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 P- z( j" q0 C/ m0 y  n6 c' w
.text:08074098 CHAR_GetLevelExp:
: K' F* n2 E  ?1 ?" {  h' z魔力私服,最新魔力宝贝私服技术交流.text:08074098               —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 k, D6 P; v2 h- m( N8 d9 R. P, O
.text:08074098                 push    ebp
0 r/ l  n  O* E7 w魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074099                 mov     ebp, esp
) l* i% C  Y# `) K& R.text:0807409B                 mov     edx, [ebp+8]
" f) J, O; [3 n* bbbs.mocwww.com.text:0807409E                 cmp     edx, 0FFh 妖城在线论坛7 n3 U  m3 @; N- m1 o
.text:080740A4                 jg      short loc_80740C0
/ V# G8 d6 S) w: o# dbbs.mocwww.com.text:080740A6                 push    ecx 妖城在线论坛& U, s& X+ c. z4 E- Y! o- r8 j
.text:080740A7                 mov     ecx, 32h 妖城在线论坛3 g- y! C- l2 A9 [
.text:080740AC                 push    edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ G" A& \% E. }  u! _* R
.text:080740AD                 mov     eax, edx
' V# [( I5 ]8 @" ^4 p( y/ K( n魔力私服,最新魔力宝贝私服技术交流.text:080740AF                 imul    eax, edx
% I7 }3 u0 m5 W) p.text:080740B2                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- @( o0 _0 @+ Z5 O# `" Q! @2 E
.text:080740B5                 cdq bbs.mocwww.com% ~. e0 _$ Z+ H( m% }$ E6 t
.text:080740B6                 idiv    ecx
' c8 C, c0 g( y& w.text:080740B8                 mov     edx, [ebp+8]
: Q- k0 Q1 H) g& \魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BB                 imul    eax, edx 妖城在线论坛6 H0 l6 F4 t$ ^8 y( Q: r0 E# C
.text:080740BE 妖城在线论坛' ~2 o# Z: @/ [1 Q9 J9 [
.text:080740BE locret_80740BE:                     
" j9 o. ^/ f( h" q- l妖城在线论坛.text:080740BE                 leave bbs.mocwww.com( K& I5 R! J% p* g$ i6 Q  B4 [( b+ l
.text:080740BF                 retn
8 ]. {! O# k. q8 J7 {bbs.mocwww.com.text:080740C0 loc_80740C0:                        
/ H  y- a9 U8 ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0                 mov     eax, 0FFFFFFFFh ( P* G- o9 c" n; E
.text:080740C5                 jmp     short locret_80740BE " o/ P' ]9 \# w! r: \

' f7 E/ x- z' C8 T4 f4 m魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
8 C5 r% @2 h+ V魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp              edx,0FFh 妖城在线论坛& U6 X4 B4 v# C& O. p
Jg           shortloc_8074C0
; E  I* Z1 r4 B% B4 Z8 W$ Ybbs.mocwww.com判断等级是否大于255是的话跳转80740C0 + H& g3 l% O9 k( _, f
否的话进入我们的等级公式: bbs.mocwww.com: _$ f) H6 Z" W0 N
(等级*等级*等级除以50)*等级 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* S$ U7 n4 X& P  z" Z( Q! R
也就是等级三次方除以50再乘以等级 * p9 z1 b) l/ m0 W
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
8 @! b1 l% m+ J/ x' t—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
4 z& J, }# n; [$ }! b5 p# @妖城在线论坛所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 1 S9 _& \9 Z4 ?! u- @8 `$ j4 n

+ \1 F! s- C5 c' w4 r# Y$ k魔力私服,最新魔力宝贝私服技术交流接下去做公式:
" |% i2 i- q( {3 l4 [bbs.mocwww.comPush              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 w2 x* F( w' V* c* |/ m$ l5 B
Mov        eax,edx      将下一等级的值赋值给eax
, Y) K7 D1 _" T# c0 U2 q: `bbs.mocwww.comImul              eax,edx          将eax,edx相乘,结果存到eax 妖城在线论坛( ~# u0 O5 r, P: _- l4 o
Imul              eax,edx          同上 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( f0 i; n8 q  \7 m: j0 y% H
Cdq                             这个做除法不加就会出错,用户登录后服务器当机
) i% p, p: z# E8 V$ t( dbbs.mocwww.comIdiv        ecx                eax除以32h算到50倍经验 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, R( g- \2 |4 x6 y5 a  L" C
Mov        edx,[ebp+8]    从新获取下一等级的值
* c4 J# Q# J7 a" b9 [4 _% ]( [  X妖城在线论坛Imul              eax,edx          将eax,edx相乘,结果存到eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 c5 }# q2 }, T- @) V5 o
bbs.mocwww.com! j/ q; A$ M# m: V
好了,这样就完成了运算过程。
+ N  J& E1 J, S# H  }5 {$ y妖城在线论坛妖城在线论坛9 w' s2 k1 h: v4 ~+ r7 o* J
.text:080740C0 loc_80740C0:                        
0 ?0 i6 O0 g. L/ D" wbbs.mocwww.commov     eax, 0FFFFFFFFh % l# X/ X# f: t3 ^
jmp     short locret_80740BE 妖城在线论坛- `7 M! U7 Y- Q% u9 D
这一段代码就是等级超过你设置的上限之后返回-1。 bbs.mocwww.com$ M' B+ Q  O2 b3 x- U- }6 u! l
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% E6 E6 o& ~, G1 T7 ~: m

# A: d: J0 P0 ~1 Q$ M! G7 a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- l1 T! Q2 n; O. y, c; y9 a; a
这里就要用到FlexHex了。 妖城在线论坛3 \: G" E0 O; {+ H9 v. ]! A) O

# T4 P9 n( R3 l; C, C& t3 tbbs.mocwww.com首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
- w5 @/ b0 T% f; Q妖城在线论坛如下对应:
4 O; Q8 J# L" x  Z魔力私服,最新魔力宝贝私服技术交流Cmp              edx,0ffh                       81  FA  FF  00  00  00
. Z  p0 Y* M  M6 e3 ejg      short loc_80740C0         71  FA
. Y- ~, S3 F" E  `* u2 A7 t$ e妖城在线论坛mov     ecx, 32h                      B9  32  00  00  00 bbs.mocwww.com! K' V: }4 c4 \& _

3 k; \+ E# Q/ K3 U0 t/ C. a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
& r, A- p( p$ U1 {+ abbs.mocwww.com这个挺有乐趣可以自己慢慢享受摸索。 bbs.mocwww.com) C: n' X' h( I0 a$ ^
" f% W% p- T* W, u: o. N
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。
作者: Maldiniymx    时间: 2009-7-19 11:49

好文章, 可以帮很多入门的来修改~
作者: 小狐狸    时间: 2009-7-19 12:20

看不懂.............
作者: lingjin3    时间: 2009-7-19 13:04

学习学习
5 q* @6 \) {3 V- q7 k. N) `& L0 L1 p& s5 O魔力私服,最新魔力宝贝私服技术交流谢谢楼主分享经验
作者: 剑帝    时间: 2009-7-19 15:18

感谢楼主分享,顶!
作者: feifei1937    时间: 2009-7-23 14:17

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




欢迎光临 妖城在线论坛 (http://bbs.mocwww.com/) Powered by Discuz! 6.0.0