没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
: O, W, k3 W* C' f0 `. A魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
7 A% z, ]* _: G3 O妖城在线论坛9 A r0 z. }# A3 n0 c/ v$ H
用IDA载入gmsv,分析完成后进入Exports选项卡。
8 s# G v- ~( [! {. A/ c" c% T, m魔力私服,最新魔力宝贝私服技术交流搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 n. K* C0 Q4 s# s6 w& Q: w4 t( q
.text:08074098 public CHAR_GetLevelExp
; u3 L8 p7 A: J.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力宝贝私服技术交流, R0 N, z# e% O% f, b; q
.text:08074098 push ebp 1 i( v1 q X! \1 B8 m. r0 ]3 N
.text:08074099 mov ebp, esp
+ C* o( q6 G# ~" y/ G—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409B mov edx, [ebp+8] bbs.mocwww.com3 \. x9 [' ~, k: Z- Q1 P: q
.text:0807409E cmp edx, 7Eh 魔力私服,最新魔力宝贝私服技术交流( k4 p0 n: E& e6 g3 n6 w Q5 b
.text:080740A1 jbe short loc_80740C0 ( A: r O8 [, d0 a
.text:080740A3 push ecx
6 x# O7 F- b/ V& ] c2 v.text:080740A4 mov ecx, 7 妖城在线论坛- ~) t1 S6 d7 A/ e4 e
.text:080740A9 push edx
* m, J8 E7 ]' h W魔力私服,最新魔力宝贝私服技术交流.text:080740AA mov eax, edx bbs.mocwww.com4 f+ Z N% s4 k: @* t( O
.text:080740AC imul eax, edx
4 n: x4 Z; z; W6 B6 i魔力私服,最新魔力宝贝私服技术交流.text:080740AF imul eax, edx 1 y3 S7 Y( f2 L
.text:080740B2 imul eax, ecx 妖城在线论坛" O# R& Z3 i" x: R
.text:080740B6 loc_80740B6:
" v. b6 C0 b: ^& H) Q, Xbbs.mocwww.com.text:080740BE leave
$ A6 x& W8 l2 k—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BF retn , C9 Q) g+ o+ A' L! W
.text:080740C0 loc_80740C0:
! K. E' n8 K$ I- D% Dbbs.mocwww.com.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4] 0 f9 T5 r6 o& N2 J1 F2 W0 T+ C
.text:080740C7 jmp short loc_80740B6
: J! M' [/ d2 _ C妖城在线论坛
6 t7 D# r: q7 U" l粗糙的解释下这段代码的意思
0 L7 \1 n; l# z4 O0 }4 C+ ybbs.mocwww.com魔力私服,最新魔力宝贝私服技术交流1 k1 _' k5 e& o* g
Push edp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 U; o# a, }1 {3 L/ Z
Mov ebp,esp
% X! x3 N& D* q0 [Mov edx,[ebp+8]
' D0 [2 ]0 ^1 c9 D m; f魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表获取当前等级的下一级存到edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 m0 x+ U/ s* d. s
bbs.mocwww.com# z' v( @. N! k t$ I
Cmp edx,7eh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 K- p# Z. {0 Z4 ^; m
将edx与7eh也就是10进制数130比较 bbs.mocwww.com6 [+ n6 L% F. D7 Z k
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 U" m3 n/ z8 O5 g* s: D
Jbe shortloc_80740C0
. R; z, U2 x% w% f6 }* [" zbbs.mocwww.com如果edx小于7eh则进行跳转到80740C0
) Z: v+ ]. ]! n7 \( w% k妖城在线论坛
1 h0 \( y4 }8 H7 W; Jbbs.mocwww.comPush ecx
1 @) ~2 a8 d( h# w3 E Z0 t9 r6 q9 |妖城在线论坛Mov ecx,7
* f# ]6 f0 s" m* F给ecx赋值7
: y% S3 t- B4 gbbs.mocwww.com
' b# d$ H" @9 Q) W0 Z/ `. @( hbbs.mocwww.comPush edx
' p, ^) g2 _( d0 U, }8 N6 [* e魔力私服,最新魔力宝贝私服技术交流Mov eax,edx
+ i1 y) _1 A& t2 x% C魔力私服,最新魔力宝贝私服技术交流把当前等级+1的值给eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート E# C+ V+ @/ e* @; ]9 U8 m3 u. u
$ F- _' G O) K8 ~" B—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul eax,edx
& \$ A7 _/ c0 A' s6 C魔力私服,最新魔力宝贝私服技术交流把eax与edx相乘,结果存在eax 魔力私服,最新魔力宝贝私服技术交流' ]9 Q+ e4 r$ b3 |
& ]+ `/ F) E/ @4 w* `+ J; ^—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul eax,ecx 魔力私服,最新魔力宝贝私服技术交流/ T/ c, E& L, k3 ^2 R0 }
把eax与ecx相乘,结果存在eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& J) l( L6 H+ L- H9 m- U6 t
/ r S- y+ X: {% ]* l, Q* O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Leave
1 A/ g, s$ q$ k' bbbs.mocwww.comRetn 魔力私服,最新魔力宝贝私服技术交流* O8 [, J: f4 u2 p4 J# z1 [
退出这个过程吧,大概 * g1 y1 ~$ b" j: L; C
8 v2 D% E, [% m% ^bbs.mocwww.comMov eax,dwordptrLevelUPtbl[edx*4]
1 s G3 ^/ u( G+ R X9 U8 {. @; l% ]妖城在线论坛这里是读取经验表的内容给eax,也就是查表读经验 妖城在线论坛/ N4 K5 B% F" @6 I
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 |& j' z- i% T9 ~% J
jmp short loc_80740B6
( U" F" r' }4 P; m' x魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表强制跳转到80740B6 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 ^+ c" c2 ]- [& B
' T7 \% }1 r0 f: Q3 mbbs.mocwww.com好了,这段代码就这点意思,逻辑上不难理解。
b8 M) v; S- F2 c4 n' lbbs.mocwww.com虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
" P) u* l: F+ L: \9 K' X
; {' M/ Y7 g! L8 \魔力私服,最新魔力宝贝私服技术交流分析完了之后开始修改了,上面的代码具体作用如下:
. Y- A# B. s/ j# O4 X: ]" U妖城在线论坛判断等级下一级是否小于7eh,是则跳转到查表。
) L$ D+ f) S/ a+ s# Q否的话也就是大于7eh时,按照下面算法运算
?" W2 Y$ m% }& T7 l6 \# K; ].text:080740A3 push ecx 魔力私服,最新魔力宝贝私服技术交流, X# e: `; z z# g- q E) _
.text:080740A4 mov ecx, 7
$ o0 s' r+ g k+ V* V+ V.text:080740A9 push edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ B5 |* s2 H4 _) Y ]
.text:080740AA mov eax, edx
% p1 @" \! F+ f. B6 y妖城在线论坛.text:080740AC imul eax, edx
; K1 J1 a! r3 P& h6 b% Gbbs.mocwww.com.text:080740AF imul eax, edx bbs.mocwww.com7 s* P( F7 P+ M5 B0 D
.text:080740B2 imul eax, ecx
4 }% F, O; [9 X- w魔力私服,最新魔力宝贝私服技术交流也就是eax的三次方乘以ecx,这里可以改成我想要的。
; O+ V2 }- _/ J# ~魔力私服,最新魔力宝贝私服技术交流- a2 R6 c' Y; ]7 y p
我的目标是改称等级的四次方除以50,但是问题来了。
2 g5 N! z6 x' ]& w. _7 D7 l3 X ]—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
, |4 C2 ?; m% k* Z7 E—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート妖城在线论坛9 w N9 j2 }5 N6 }' x, ~
.text:08074098 public CHAR_GetLevelExp
( H: O+ f2 m# Z9 [* P妖城在线论坛.text:08074098 CHAR_GetLevelExp:
& L- z b' @* W7 w$ {魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074098
3 ?9 D% ?+ o9 Y! V0 r ], dbbs.mocwww.com.text:08074098 push ebp
7 [; n2 t5 e8 t6 M1 t1 ~# ?5 o+ |! e—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074099 mov ebp, esp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( F1 u' c9 K- ^/ s
.text:0807409B mov edx, [ebp+8]
9 r4 l, p0 a/ z) A, R5 obbs.mocwww.com.text:0807409E cmp edx, 0FFh
4 @$ \* ]1 O, W妖城在线论坛.text:080740A4 jg short loc_80740C0
0 G( u5 _) S& _! r4 _* \0 q魔力私服,最新魔力宝贝私服技术交流.text:080740A6 push ecx
' H4 M# c e3 M—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A7 mov ecx, 32h
# n& a' u' k) ?% G% w& {—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AC push edx ; N' n2 @0 s4 e; t# [
.text:080740AD mov eax, edx 魔力私服,最新魔力宝贝私服技术交流0 q7 [# l2 Z- ?8 W$ `
.text:080740AF imul eax, edx 妖城在线论坛$ W* t7 c" x5 w6 Q
.text:080740B2 imul eax, edx 魔力私服,最新魔力宝贝私服技术交流9 b* ]4 N9 K" S
.text:080740B5 cdq
+ ^% j( I# z8 W: g+ K5 J妖城在线论坛.text:080740B6 idiv ecx
4 H3 [9 A: U3 Z% d, {$ M# Lbbs.mocwww.com.text:080740B8 mov edx, [ebp+8] 妖城在线论坛" {. m- H% @9 j8 H0 R
.text:080740BB imul eax, edx 妖城在线论坛! i' r& D; ]8 o' g
.text:080740BE 魔力私服,最新魔力宝贝私服技术交流$ G# X/ q! a5 M4 b, g3 ]0 h0 T* c
.text:080740BE locret_80740BE:
Z% }, x a" P' mbbs.mocwww.com.text:080740BE leave
6 H7 o3 P6 H" O9 I o" k" x.text:080740BF retn bbs.mocwww.com! g: h3 X( c9 ~; q7 a+ {
.text:080740C0 loc_80740C0: 魔力私服,最新魔力宝贝私服技术交流: z8 U$ O" R1 T, |/ N
.text:080740C0 mov eax, 0FFFFFFFFh
9 @& M5 o, h4 J3 y6 e; U妖城在线论坛.text:080740C5 jmp short locret_80740BE
0 D0 p% F+ Z7 N妖城在线论坛妖城在线论坛9 s& c, {% x& D' O
方便起见这里直接把我改好的代码贴出来,与原来不同的地方: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 {- j) j* |: r5 A3 P& G; ]3 ^- u
Cmp edx,0FFh bbs.mocwww.com5 B( F1 Y1 ?0 k; i, D& o
Jg shortloc_8074C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( j) I3 D- [' Q0 {: M4 s
判断等级是否大于255是的话跳转80740C0
- V; E1 O# }3 f" F; b7 J' e/ `% v妖城在线论坛否的话进入我们的等级公式: bbs.mocwww.com2 K' c" H y, Y& |" _" ?4 S- l; M
(等级*等级*等级除以50)*等级 9 v" M# T5 z% G, B1 o" a& v
也就是等级三次方除以50再乘以等级 bbs.mocwww.com: L- x9 t/ Z9 x0 \3 J0 |0 M
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 bbs.mocwww.com+ R4 {: p! E4 @) B* v4 T
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 妖城在线论坛4 g6 D6 n3 Z0 h, ~9 T- \
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
' W. s' ?8 j2 @% vbbs.mocwww.com
0 w3 P! J) Y! Y; R7 r妖城在线论坛接下去做公式:
6 T, \1 T# k: W# @. Z. [—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
- _+ F8 S& [4 [" L! \' Y- k: T妖城在线论坛Mov eax,edx 将下一等级的值赋值给eax ( F) Q b* k( C7 y" B- H
Imul eax,edx 将eax,edx相乘,结果存到eax 妖城在线论坛, y1 U% g/ Y! w( d% Q! Q
Imul eax,edx 同上 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* R3 J0 g r7 u- q
Cdq 这个做除法不加就会出错,用户登录后服务器当机
) l4 [4 l/ F9 K$ S* G妖城在线论坛Idiv ecx eax除以32h算到50倍经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- V) y" z$ w# [ t2 @
Mov edx,[ebp+8] 从新获取下一等级的值
) S8 \# F2 _; {. l妖城在线论坛Imul eax,edx 将eax,edx相乘,结果存到eax bbs.mocwww.com; c% @- T' {, \7 q
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 z6 e4 y' z \& x! f) ]7 M
好了,这样就完成了运算过程。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 l1 L* T5 W3 v
bbs.mocwww.com; w/ r$ c; p2 T# J1 W
.text:080740C0 loc_80740C0:
8 G& J7 g, P% O4 y4 |4 b妖城在线论坛mov eax, 0FFFFFFFFh 魔力私服,最新魔力宝贝私服技术交流( W' ~+ c+ ?, L; x4 f& @3 Y8 G8 U
jmp short locret_80740BE 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ J4 y, |4 c* d @
这一段代码就是等级超过你设置的上限之后返回-1。 魔力私服,最新魔力宝贝私服技术交流) D; t' p; t6 ^6 E: X
魔力私服,最新魔力宝贝私服技术交流# n8 m+ y; K% R! B* Q! n$ \: ]
# _" i7 D" b: ?( h( D妖城在线论坛下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 魔力私服,最新魔力宝贝私服技术交流( F v% Z2 e* e: |
这里就要用到FlexHex了。 ' {; ]! s" d w7 \9 w- E2 A+ q
! J" ^' C' l5 ^5 }5 s) cbbs.mocwww.com首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 / \0 }0 r# b1 M f! q
如下对应:
1 R5 N; n# f7 V% T2 h魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp edx,0ffh 81 FA FF 00 00 00 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# S( J! ^; C% s4 h$ B
jg short loc_80740C0 71 FA —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 J2 A; Q0 g9 V4 V
mov ecx, 32h B9 32 00 00 00 0 d3 i- a, j& F- P
, D0 e4 S& x/ Y0 B- ]依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 5 X5 A0 j$ [/ \
这个挺有乐趣可以自己慢慢享受摸索。 bbs.mocwww.com' n; g8 y$ f; _& ^) S; ]4 R
" J: j/ ^8 `( K0 ?
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。