标题:
[魔力私服分享]
没有汇编语言基础,参照网上无数教程和相关资料,修改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* q
Mov 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.com
Push 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.com
Imul 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 Z
jmp 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.com
Push 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.com
Imul 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.com
Idiv 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.com
mov 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 e
jg 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