没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
/ A ^( R3 m; A5 _妖城在线论坛使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
9 z5 @4 r/ c0 C
: e. ]3 V+ `7 V; H3 X5 ]# A用IDA载入gmsv,分析完成后进入Exports选项卡。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# ^, N' O: x- Z, w5 }2 d8 S+ Y
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
1 D" m) ]# L- a! [0 z5 X妖城在线论坛.text:08074098 public CHAR_GetLevelExp
# n+ L' T. p- `( z$ l魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074098 CHAR_GetLevelExp: bbs.mocwww.com& h- @7 p7 K- b* B! E4 @
.text:08074098 push ebp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. l; V* @: v: T% I
.text:08074099 mov ebp, esp 魔力私服,最新魔力宝贝私服技术交流9 G" v- t1 n; w, A' l% V
.text:0807409B mov edx, [ebp+8]
* Y% B% Q5 D8 V1 |2 y.text:0807409E cmp edx, 7Eh
# ]- n4 _/ n# j& B6 n% `bbs.mocwww.com.text:080740A1 jbe short loc_80740C0
0 O6 @$ s4 t* U: A' N$ z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A3 push ecx
, o; \6 D) f) n% ?8 | \魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A4 mov ecx, 7
: | L; L) `$ [& h+ g/ U! f3 M.text:080740A9 push edx
1 ^/ ~5 s* e: x; Lbbs.mocwww.com.text:080740AA mov eax, edx
+ e) e9 Y9 o# `4 {/ g' @! Jbbs.mocwww.com.text:080740AC imul eax, edx
5 n" w a) i8 G& i" `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740AF imul eax, edx
# o0 c; `/ J4 {1 `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B2 imul eax, ecx 妖城在线论坛6 V" v: P! m4 b; [. ^; q- J4 t' k1 U
.text:080740B6 loc_80740B6:
7 C& ]& ^# Z9 a8 G6 L% n- e0 P魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BE leave 妖城在线论坛! v$ q2 c9 A0 w
.text:080740BF retn 妖城在线论坛/ k! w3 n* ~* \" N8 ]# y! b
.text:080740C0 loc_80740C0:
* T% S& f$ d% Gbbs.mocwww.com.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4] ' s& j& X% {" z9 L! e' u
.text:080740C7 jmp short loc_80740B6
6 Z' d) X- Q3 B0 s7 }- O—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
/ N( B) ]# H) }9 [—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート粗糙的解释下这段代码的意思 + }9 [! N0 ?+ g3 l! S9 ]9 o2 y
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. D& F1 v; P9 H) j# @, z$ X
Push edp
* S2 l- k$ ?, u6 G9 m1 X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov ebp,esp
`) ^4 a, Q; X) i# v* A妖城在线论坛Mov edx,[ebp+8] 魔力私服,最新魔力宝贝私服技术交流- X6 s% D- e: c# p
获取当前等级的下一级存到edx
! Z: Y$ X5 E, |: R; z% _bbs.mocwww.com
* [9 i2 ]# o4 R, {妖城在线论坛Cmp edx,7eh
* U3 Q6 A& |( r" q2 [. [5 b/ F将edx与7eh也就是10进制数130比较 bbs.mocwww.com: m+ F6 |0 ^ t& j8 \; L; Q
; ?* W4 s8 f, t/ zbbs.mocwww.comJbe shortloc_80740C0
8 A/ Z5 `6 x. ^5 e, v魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表如果edx小于7eh则进行跳转到80740C0 7 S4 D1 a5 X% G# j+ C
魔力私服,最新魔力宝贝私服技术交流. t" g% v) H+ k4 U
Push ecx
: ^+ _2 V- O! o魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov ecx,7
" ?: f- i6 i8 s/ {) N1 J魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表给ecx赋值7
' \- w- ?! r4 J3 ?7 r( E( hbbs.mocwww.com魔力私服,最新魔力宝贝私服技术交流0 Y% \7 ?- A+ s/ G
Push edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ x2 R, X8 H/ M) f4 u/ j1 ~5 s; H: ~
Mov eax,edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 p' {9 c M( Q- q6 I
把当前等级+1的值给eax
# F* b7 \; V" ^+ R. u魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
# @) m, w( J! R* T, U& {! y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx
/ }8 k$ j; u& w1 {; I- }—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート把eax与edx相乘,结果存在eax
( P! Y# e! ?2 b( j; p8 K妖城在线论坛
3 Q0 }9 D+ t6 ]6 g1 b) QImul eax,ecx
/ ?5 ~9 `; g) n* |. u% h2 ?bbs.mocwww.com把eax与ecx相乘,结果存在eax
$ v5 `+ ^! S3 \6 V' `
/ Y4 C& P$ P6 i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートLeave
5 c @9 A* h2 X: H( G5 q9 Ubbs.mocwww.comRetn
& l/ D2 E' I: `. y) {4 _—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート退出这个过程吧,大概 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: u; V4 ?5 F6 |; V
8 V: {$ j9 W ^' Ubbs.mocwww.comMov eax,dwordptrLevelUPtbl[edx*4] bbs.mocwww.com/ L, V) P2 y( v% }' m7 s
这里是读取经验表的内容给eax,也就是查表读经验
2 y2 [; L1 z0 S0 L9 |魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
' B- ?0 A5 \% X l* k+ X$ X7 Dbbs.mocwww.comjmp short loc_80740B6 bbs.mocwww.com) \1 H: a2 z/ O+ h+ V
强制跳转到80740B6
6 b: B& }+ P' }' v$ d! S魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
7 T! V( X& c4 {3 Q好了,这段代码就这点意思,逻辑上不难理解。
q) |/ `% n" y虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 妖城在线论坛; @" m& }6 H, u# u( Z- w
3 d6 r+ D+ i1 W% @bbs.mocwww.com分析完了之后开始修改了,上面的代码具体作用如下:
* s2 R: s8 d& d4 D/ r% V4 s魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表判断等级下一级是否小于7eh,是则跳转到查表。 妖城在线论坛3 ?1 z: a* n6 D4 q
否的话也就是大于7eh时,按照下面算法运算
$ d6 L7 G' [5 A8 ?- G- x) b: \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A3 push ecx
( ?$ R7 d7 v" p3 r- Z.text:080740A4 mov ecx, 7 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 G( x+ h* R3 \6 d* t8 o% {
.text:080740A9 push edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, M* N! A/ E7 D+ H# }
.text:080740AA mov eax, edx
2 }+ o2 f4 R) L: Q7 g( p# u妖城在线论坛.text:080740AC imul eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: v2 G- r3 Q {% z1 {' {& x& S
.text:080740AF imul eax, edx
4 H8 _5 O) v9 n魔力私服,最新魔力宝贝私服技术交流.text:080740B2 imul eax, ecx bbs.mocwww.com4 V8 [1 g+ O, k9 P% d9 I0 T
也就是eax的三次方乘以ecx,这里可以改成我想要的。
# e9 B$ X8 D5 c7 @妖城在线论坛—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) d, i! F; {, R: G' t, `* d
我的目标是改称等级的四次方除以50,但是问题来了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 m9 m; W x. K: a
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
0 E, b6 Q# a% T; W' ]( h: j1 b6 S2 ~bbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 [! Z. i7 K/ i5 a; T0 p
.text:08074098 public CHAR_GetLevelExp
1 Y' k! `! E+ K( F- T) Y4 t—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 CHAR_GetLevelExp:
6 H. O: B! w/ ~3 S3 h" m/ d! G5 N妖城在线论坛.text:08074098 [5 n* E5 J# c5 \
.text:08074098 push ebp
2 A6 z3 q+ {8 u) m7 `7 T/ z+ l. _魔力私服,最新魔力宝贝私服技术交流.text:08074099 mov ebp, esp
+ m6 o" \6 O2 Z5 v1 Z1 D3 r# K. `—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409B mov edx, [ebp+8] 妖城在线论坛( p) B0 b9 k" \' s M9 Y/ r+ j& \
.text:0807409E cmp edx, 0FFh
) J8 C$ o8 h! zbbs.mocwww.com.text:080740A4 jg short loc_80740C0
7 f! @9 y! V) U$ v, r; d魔力私服,最新魔力宝贝私服技术交流.text:080740A6 push ecx 魔力私服,最新魔力宝贝私服技术交流& C) N. c4 B5 ?* v6 P) v4 g' h
.text:080740A7 mov ecx, 32h bbs.mocwww.com4 P, F l3 R( M' z) Y6 Q" S
.text:080740AC push edx bbs.mocwww.com/ @1 N) B1 K' e) U4 c, s
.text:080740AD mov eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! C+ `% ^9 v3 G( s% f. }) Z
.text:080740AF imul eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" G) l6 t4 v/ a, Z% ^
.text:080740B2 imul eax, edx
5 z+ X ^) q+ X) _# Q2 _—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B5 cdq 魔力私服,最新魔力宝贝私服技术交流7 Q2 S, Q+ f I
.text:080740B6 idiv ecx 妖城在线论坛5 ]" j5 |) n# g) ?- m5 p% }
.text:080740B8 mov edx, [ebp+8]
8 a, f: [8 f! m6 y& Z8 I魔力私服,最新魔力宝贝私服技术交流.text:080740BB imul eax, edx
, }8 P% d. k! [' ^% v—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BE —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 F# z0 d( E, ~& n7 S( v) }
.text:080740BE locret_80740BE: 魔力私服,最新魔力宝贝私服技术交流 `, `! x6 O$ Q* @5 S: Q- v
.text:080740BE leave
7 x1 G' v6 l; X1 c4 ~$ j d6 C魔力私服,最新魔力宝贝私服技术交流.text:080740BF retn
+ V5 [: z0 ~. B3 r# C3 Z# a4 k妖城在线论坛.text:080740C0 loc_80740C0:
3 W# ]: g! `: ~魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 mov eax, 0FFFFFFFFh bbs.mocwww.com+ J3 W9 d* A5 u+ x* n) `
.text:080740C5 jmp short locret_80740BE
1 Y* h3 h: U* T/ n$ X魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
8 @3 E# j+ f, }妖城在线论坛方便起见这里直接把我改好的代码贴出来,与原来不同的地方: 妖城在线论坛7 C g- L+ S8 d7 i; I4 I
Cmp edx,0FFh 0 ~1 G* J7 e8 ?$ Q8 J2 _
Jg shortloc_8074C0
& P. I( q9 f2 b—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート判断等级是否大于255是的话跳转80740C0
* ?7 D: D- X% D3 ~" q妖城在线论坛否的话进入我们的等级公式:
Q: R7 O' z$ p, x5 h魔力私服,最新魔力宝贝私服技术交流(等级*等级*等级除以50)*等级 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! x1 P' z( c/ @# O& e" M
也就是等级三次方除以50再乘以等级
( v/ ~1 F) t; a) t为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
& J* \# X6 W$ f7 e; W8 Fbbs.mocwww.com216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
$ y2 v: W5 `2 o4 K2 j1 s9 _bbs.mocwww.com所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 bbs.mocwww.com6 W. l/ E0 P0 l( Q! H: @' `1 p7 Y$ y+ u
7 X% v6 z# d: s- c) `妖城在线论坛接下去做公式: 妖城在线论坛+ T9 [: R9 r! P: S# J3 k
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
* l S2 w+ G ~9 i3 P7 k: z' D" b8 h+ l妖城在线论坛Mov eax,edx 将下一等级的值赋值给eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: ~5 z; S# F+ H- c: r- w
Imul eax,edx 将eax,edx相乘,结果存到eax
7 ]6 \) c- f4 X5 V妖城在线论坛Imul eax,edx 同上 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ J$ m4 N/ S; n7 m1 q2 N- M
Cdq 这个做除法不加就会出错,用户登录后服务器当机
4 Z, `3 @0 a5 `4 I, d魔力私服,最新魔力宝贝私服技术交流Idiv ecx eax除以32h算到50倍经验 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# \/ O# C1 L6 ^" ^
Mov edx,[ebp+8] 从新获取下一等级的值
- U/ }; q! Q" p' U2 U$ u% G. kbbs.mocwww.comImul eax,edx 将eax,edx相乘,结果存到eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' j/ H. Q2 X& S- R
妖城在线论坛. V9 U7 g% D/ b! g7 e" z
好了,这样就完成了运算过程。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 S/ k4 i# d3 |
8 u& L8 e1 u3 G) T2 x; l6 W魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0: 妖城在线论坛; \: c1 p' _' t+ w( x
mov eax, 0FFFFFFFFh
- M4 H$ ]& h! m6 u7 s: H3 q+ A; b—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjmp short locret_80740BE bbs.mocwww.com& o v, g7 y! o R- k
这一段代码就是等级超过你设置的上限之后返回-1。 - i. K6 v- _7 L# u! Z2 g/ J
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 ~5 F) P/ j P! \: }- P
& A$ p; @' y/ {3 V下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 ) G) F' ^" }! S$ P+ D' Q; H
这里就要用到FlexHex了。
0 s# D$ s1 I* X x妖城在线论坛$ Z, D* u' M$ m1 p5 ]# Y# _
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 ' n/ S2 m/ U9 N* f) C9 F
如下对应: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 r# a4 K+ V6 i. T- r y
Cmp edx,0ffh 81 FA FF 00 00 00 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 ? i9 n# D5 f
jg short loc_80740C0 71 FA
: ], X: T6 w) n) J9 w8 c$ T- U* e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表mov ecx, 32h B9 32 00 00 00 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) c2 E: ?* k4 C @: q
* l/ l. z% c% ~/ v& [
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
4 Z4 v0 U: h8 r1 W6 t# V5 e妖城在线论坛这个挺有乐趣可以自己慢慢享受摸索。
9 D: N- o/ ]& r g w1 ?魔力私服,最新魔力宝贝私服技术交流妖城在线论坛, r8 S$ q3 ?3 ]# ]
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。