没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
0 Z2 b j) r3 {) Q" Y8 }- q/ j妖城在线论坛使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
( E8 D* E9 \" Q6 K" s& W& |bbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& }2 I! \# `) e: \
用IDA载入gmsv,分析完成后进入Exports选项卡。
7 W: r5 x. I! O# |! G$ m—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
4 P5 X' B- Z0 ]. B2 Z3 u. V妖城在线论坛.text:08074098 public CHAR_GetLevelExp
- K0 ~: ~6 z1 @8 d. a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074098 CHAR_GetLevelExp:
2 X6 e" h$ _; Y2 kbbs.mocwww.com.text:08074098 push ebp 妖城在线论坛, d) V& B( p9 W: j3 ~1 Z
.text:08074099 mov ebp, esp
/ a+ }& j! i; P1 Rbbs.mocwww.com.text:0807409B mov edx, [ebp+8]
3 T" A# i, D3 S+ ~% i.text:0807409E cmp edx, 7Eh —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. t! K" Q0 w" L! |, k) t' g. |: w
.text:080740A1 jbe short loc_80740C0
: D# ]. Z( E7 x" a8 f8 h) E—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A3 push ecx
, h# K$ ?: j( S; n- f—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A4 mov ecx, 7 妖城在线论坛7 f( _5 R9 z5 Q3 m
.text:080740A9 push edx 4 O9 _$ b. L) v* }4 W" N
.text:080740AA mov eax, edx 魔力私服,最新魔力宝贝私服技术交流( q# O: G3 C( c# ?9 Z; e9 k
.text:080740AC imul eax, edx
3 d4 k1 D% N8 Y" v$ E魔力私服,最新魔力宝贝私服技术交流.text:080740AF imul eax, edx
# i, \4 a( d# v( z0 X& Y7 v/ l! x. zbbs.mocwww.com.text:080740B2 imul eax, ecx
' y% J2 I6 e0 X& O p.text:080740B6 loc_80740B6: 魔力私服,最新魔力宝贝私服技术交流- `( [% f# g) s- `
.text:080740BE leave
# s0 L, k3 Q3 x0 x3 V.text:080740BF retn bbs.mocwww.com2 u- B7 }3 |5 u: M2 `
.text:080740C0 loc_80740C0:
. D$ q$ k |/ h: n* _# s" |- l—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
4 P. p; [$ ?7 D) G' o/ }bbs.mocwww.com.text:080740C7 jmp short loc_80740B6
& g9 g/ Y9 D+ ?魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力宝贝私服技术交流( j: z o( {$ C$ i- }+ F
粗糙的解释下这段代码的意思 妖城在线论坛4 k: C M7 m) L- Q. E) H: K0 A
/ b: [7 q! C% A& Ibbs.mocwww.comPush edp
/ q. ~) g9 H& I/ @+ L* |% ~/ }# `—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov ebp,esp
) s6 g, y+ E a% L0 R( u1 |魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov edx,[ebp+8]
* x ~2 t, r: C& e1 U7 obbs.mocwww.com获取当前等级的下一级存到edx
7 A% R t( b" p魔力私服,最新魔力宝贝私服技术交流' K8 l0 d& b$ ]* O: p
Cmp edx,7eh
7 h; ]5 ~! }, f6 x魔力私服,最新魔力宝贝私服技术交流将edx与7eh也就是10进制数130比较 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 E+ |1 ^0 Q2 K! B, s
bbs.mocwww.com& X) ]: _2 |, G' J& d% h5 m, H4 U
Jbe shortloc_80740C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 d, T( ^$ {! X3 r2 M
如果edx小于7eh则进行跳转到80740C0
. g( n% ^, d. Z$ ^" I% ^+ j' h# G3 Y5 H
Push ecx
( ?1 O/ q- V0 P3 m1 n魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov ecx,7 bbs.mocwww.com# U9 ?6 s L1 R- b5 Q" u: G
给ecx赋值7
& T5 x1 A! `8 Ibbs.mocwww.combbs.mocwww.com5 g# ~8 ^ S# N7 e p4 m7 S
Push edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' l; E/ N9 G7 i4 [& T* u. f0 L3 a
Mov eax,edx
; |8 Q {* w1 E: G% R+ M妖城在线论坛把当前等级+1的值给eax
8 t$ `2 E1 ~# k) B1 G h; z% g8 f妖城在线论坛
0 S, E$ w! _& E0 ^妖城在线论坛Imul eax,edx
: e; @# j6 _6 n! }' f' }. w4 t/ S把eax与edx相乘,结果存在eax
; W7 N8 u0 O6 p1 `. K: Q) W魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表魔力私服,最新魔力宝贝私服技术交流# S/ L: W% Y7 c1 E6 |0 Q, r
Imul eax,ecx
% A$ U$ O& I' g& S c" e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表把eax与ecx相乘,结果存在eax
6 u# _* ~: t- n! E7 ]9 s—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
7 I0 v" t6 u1 R' @2 E- Z; |魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Leave
$ b) A) P( x: i; ]Retn
9 T8 M+ \9 b( x% ]妖城在线论坛退出这个过程吧,大概
$ |0 F' n* x* k9 c7 H- ~- ~9 R4 ibbs.mocwww.com
( n2 K3 y+ H- E& M' n' p0 y( C—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov eax,dwordptrLevelUPtbl[edx*4]
3 m/ R, c* v0 [- A( e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表这里是读取经验表的内容给eax,也就是查表读经验 bbs.mocwww.com5 N) C3 A" [$ P( O8 J
1 P" H. }( u* x% L3 z& ~- H妖城在线论坛jmp short loc_80740B6
4 Y( v2 p7 K" Z( P! U1 \妖城在线论坛强制跳转到80740B6
c% E0 m! o) W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( V2 B( c- O* s: Z/ N0 ^1 P$ X& l
好了,这段代码就这点意思,逻辑上不难理解。
- F3 I( C( z) D. J8 ebbs.mocwww.com虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 ( ^) I* O0 X2 |+ u6 C/ W7 G1 j9 k
; N; o* Y1 B) G9 m; \魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表分析完了之后开始修改了,上面的代码具体作用如下:
4 w5 h5 a9 w" U6 U2 ?/ A0 Z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表判断等级下一级是否小于7eh,是则跳转到查表。 魔力私服,最新魔力宝贝私服技术交流' m* A- m9 ]& b/ R S$ C
否的话也就是大于7eh时,按照下面算法运算
' R7 _. Y- n0 y0 ]魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A3 push ecx
6 m! P. [# P# Y' @; X/ O$ q, E妖城在线论坛.text:080740A4 mov ecx, 7 ) D3 r( I. J! g% [1 E
.text:080740A9 push edx
! J4 |) ^/ i! d5 m魔力私服,最新魔力宝贝私服技术交流.text:080740AA mov eax, edx
9 M3 G/ e" f0 V7 C9 E妖城在线论坛.text:080740AC imul eax, edx
D4 x1 J) S! ^—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AF imul eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; D; s/ T& W1 S: s. E/ J
.text:080740B2 imul eax, ecx bbs.mocwww.com0 K; ]! ?5 j6 a, g$ X7 I
也就是eax的三次方乘以ecx,这里可以改成我想要的。 bbs.mocwww.com; ~" o& @) G `3 y) D
bbs.mocwww.com" c0 H- N6 ^- q9 j/ T* V( m) V" p
我的目标是改称等级的四次方除以50,但是问题来了。
$ q$ p3 b7 U6 T6 r: y( D魔力私服,最新魔力宝贝私服技术交流怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 妖城在线论坛7 W+ ~+ Y! U) B- p" [! D
4 e7 b- K* B( R: x$ s+ G$ F8 q.text:08074098 public CHAR_GetLevelExp 魔力私服,最新魔力宝贝私服技术交流, a$ t* r2 l# e, y4 ^! k: T: R
.text:08074098 CHAR_GetLevelExp:
, `# w+ V& {0 z* \9 k4 @妖城在线论坛.text:08074098
^& r2 K x4 q2 l. B8 Vbbs.mocwww.com.text:08074098 push ebp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% t. k+ B2 T9 M# x
.text:08074099 mov ebp, esp
( M' e5 C; B+ ]8 [& [* {魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:0807409B mov edx, [ebp+8]
+ O1 C2 E( b2 V/ e, z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:0807409E cmp edx, 0FFh
) |/ b0 ?5 T( x; k妖城在线论坛.text:080740A4 jg short loc_80740C0 bbs.mocwww.com2 E! N8 R) e* c5 `% p3 i
.text:080740A6 push ecx
6 E- \7 I6 k; I, ~5 K4 L; J1 c% u魔力私服,最新魔力宝贝私服技术交流.text:080740A7 mov ecx, 32h
5 \! o. P) a/ ?2 D9 E妖城在线论坛.text:080740AC push edx
7 q/ A& A/ N1 t3 y6 E# [bbs.mocwww.com.text:080740AD mov eax, edx 魔力私服,最新魔力宝贝私服技术交流( e! Z4 X/ ^& @
.text:080740AF imul eax, edx 魔力私服,最新魔力宝贝私服技术交流1 }- G" a: l4 y2 A2 H
.text:080740B2 imul eax, edx
- y8 j, v2 W) q8 a6 N$ u! ~1 d0 n魔力私服,最新魔力宝贝私服技术交流.text:080740B5 cdq 妖城在线论坛! ?2 M) e! R+ [% s: A
.text:080740B6 idiv ecx # h2 W2 h! d/ @3 S. U$ x+ X
.text:080740B8 mov edx, [ebp+8] 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 h% _0 _; }! m8 O
.text:080740BB imul eax, edx
* k# K% X! o. J& G, k$ {—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BE
. M9 I+ G7 c4 t—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BE locret_80740BE:
3 f+ V" v% G9 x+ q2 K; h: P- M) p魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BE leave 妖城在线论坛2 N* d' W& k. K2 s! F$ f( Z
.text:080740BF retn bbs.mocwww.com/ c9 t7 f% [+ @) A" v
.text:080740C0 loc_80740C0:
, u8 _. [% J, N# k" i1 H# j妖城在线论坛.text:080740C0 mov eax, 0FFFFFFFFh bbs.mocwww.com+ u8 X7 ~$ p* z% g# ?* h( Z
.text:080740C5 jmp short locret_80740BE
" }* d2 U( d' N& |; F0 q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
- S, I( ?5 B1 p% N—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
# _) V \6 C# ?$ ^bbs.mocwww.comCmp edx,0FFh
, L- [7 E- w0 U& b8 q/ O; O5 JJg shortloc_8074C0 妖城在线论坛. y; r6 B! }6 u
判断等级是否大于255是的话跳转80740C0
$ _+ I3 }7 m% G6 m3 J6 t9 @+ Lbbs.mocwww.com否的话进入我们的等级公式: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 {7 [; u$ O& R/ E0 W: I1 W
(等级*等级*等级除以50)*等级
' R* x' ?6 w1 T# T1 n5 ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート也就是等级三次方除以50再乘以等级
$ }9 O- M/ C, `4 a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 H( @3 A5 Q; B6 o3 w
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
) I) Z1 |4 ~* I: c" N魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
/ v5 ~) o" y: p# H* m( ~% s) d魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
% U9 j3 u& G8 K2 o+ gbbs.mocwww.com接下去做公式: 妖城在线论坛0 |; [3 q* l! n1 g+ N8 r
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
2 {* z9 a6 x {8 E; k# L魔力私服,最新魔力宝贝私服技术交流Mov eax,edx 将下一等级的值赋值给eax
1 Q d2 W3 {' j7 J魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx 将eax,edx相乘,结果存到eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ o5 d2 J, l1 q! j- j
Imul eax,edx 同上 妖城在线论坛$ o7 P2 [9 Z' I
Cdq 这个做除法不加就会出错,用户登录后服务器当机 bbs.mocwww.com, w6 k3 m8 t1 d H2 @
Idiv ecx eax除以32h算到50倍经验 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; ~( r6 o8 ?# j2 d e0 W9 j$ O* G
Mov edx,[ebp+8] 从新获取下一等级的值 bbs.mocwww.com+ P0 ?+ S( b8 ]1 E! i; v' y
Imul eax,edx 将eax,edx相乘,结果存到eax bbs.mocwww.com3 k- N3 J3 U8 Y* d1 v; E W
! m4 p! o, w Q6 g+ _% i6 O! vbbs.mocwww.com好了,这样就完成了运算过程。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. W: ^' I$ R0 v+ \5 [, d' D, q
: F5 T' D P' ^ e3 S2 O: d% q1 Ybbs.mocwww.com.text:080740C0 loc_80740C0:
% }2 q3 z S, {) z- }bbs.mocwww.commov eax, 0FFFFFFFFh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 y& E" ?/ z8 v( V7 K
jmp short locret_80740BE
1 i( m9 k7 E, V% nbbs.mocwww.com这一段代码就是等级超过你设置的上限之后返回-1。
1 {+ n3 a! s, ?! v R+ H
5 |% m3 }* l; j/ f& }* v
! ] A! x4 \2 K5 |# E魔力私服,最新魔力宝贝私服技术交流下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 bbs.mocwww.com+ I9 s8 U6 g/ ~, [& W* G: Q
这里就要用到FlexHex了。 bbs.mocwww.com9 f' v4 N& g' y
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% f7 }5 V5 A/ P. _/ q6 y9 p0 b
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; x* I5 @* {1 A5 X1 j
如下对应:
5 @' t# X, I. c% w( K妖城在线论坛Cmp edx,0ffh 81 FA FF 00 00 00
; o0 f$ W1 y' G3 b- }2 x魔力私服,最新魔力宝贝私服技术交流jg short loc_80740C0 71 FA
; r# }* [; a4 `* P' Y; obbs.mocwww.commov ecx, 32h B9 32 00 00 00
+ |" e5 x$ O& b9 z& W: I* K. f妖城在线论坛bbs.mocwww.com5 [ f6 \6 F) E; i; L( L5 m# H9 m
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
! {; C8 a6 x% t/ e' n—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这个挺有乐趣可以自己慢慢享受摸索。 bbs.mocwww.com, G5 [% B6 O' ]4 S4 Q- F2 P1 V
0 V4 F( {7 U! \: O7 K妖城在线论坛以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。