发新话题
打印

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

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 bbs.mocwww.com% v& i8 _( ]* S( c3 w- q
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
4 `/ s7 M/ c4 `0 |—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力宝贝私服技术交流$ _' X) ?/ j( @  g5 m- B  T& u
用IDA载入gmsv,分析完成后进入Exports选项卡。 bbs.mocwww.com1 m$ _! F- n8 v
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 9 p) O" Y) r9 L* y# Q+ d
.text:08074098                 public CHAR_GetLevelExp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- _! h8 c  r+ n' ]- f# C4 v
.text:08074098 CHAR_GetLevelExp: 妖城在线论坛- s4 Y) @) q' r: c; e9 A
.text:08074098                 push    ebp
2 L8 W" p& w0 D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074099                 mov     ebp, esp
, p, U! ?0 }1 Z5 @. Z魔力私服,最新魔力宝贝私服技术交流.text:0807409B                 mov     edx, [ebp+8]
( @2 Q; C, a, s) C) o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409E                 cmp     edx, 7Eh
; X4 p9 ^% b* |2 R/ U% mbbs.mocwww.com.text:080740A1                 jbe     short loc_80740C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 Y; f! o! ~" K( A2 k5 A6 V
.text:080740A3                 push    ecx - v1 I: t2 ~2 ^3 ^# K7 D" p
.text:080740A4                 mov     ecx, 7
# c/ X& z0 A( Q2 e8 ?' s" p妖城在线论坛.text:080740A9                 push    edx
1 }- S- O" ^; f' V' t.text:080740AA                 mov     eax, edx
, i3 M/ i  X" ^' L& n) h—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AC                 imul    eax, edx 妖城在线论坛) y9 }% O9 y, x" _
.text:080740AF                 imul    eax, edx 妖城在线论坛! Z& X3 w% K' h1 A8 k
.text:080740B2                 imul    eax, ecx
% S( J6 b. Z5 z  F妖城在线论坛.text:080740B6 loc_80740B6:   
7 }6 i4 m- |1 |+ \bbs.mocwww.com.text:080740BE                 leave bbs.mocwww.com4 \( j7 G/ T/ C& L$ ?- ]) i# E. i
.text:080740BF                 retn —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! q" i" N8 U) o2 i% C2 r' M
.text:080740C0 loc_80740C0:                           7 n$ r7 n1 p/ A7 H
.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4]
: e0 j6 E- {. I0 K2 s/ `.text:080740C7                 jmp     short loc_80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" p/ A* j  ?% ?  J, T

& u+ `* }. A6 B0 P( s4 b—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート粗糙的解释下这段代码的意思 妖城在线论坛8 m( n  Q9 k; _( Q$ T) A

% E$ k( ^, X. C2 I1 o! |—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush              edp
2 |4 R. k' @% [魔力私服,最新魔力宝贝私服技术交流Mov        ebp,esp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 W, K" O% l- f) X' P
Mov        edx,[ebp+8] - l2 [$ I/ ?$ O& X2 k! M- a! S5 {
获取当前等级的下一级存到edx
9 W5 Y3 `4 [2 f( n, m魔力私服,最新魔力宝贝私服技术交流8 M2 {- I* F" }# b) s2 l% E
Cmp              edx,7eh 妖城在线论坛+ l: O  v1 r8 v, E
将edx与7eh也就是10进制数130比较
1 d2 E3 b4 t! T1 C: ?9 A妖城在线论坛bbs.mocwww.com, B1 O/ ?/ S0 S6 {9 y, _" I
Jbe         shortloc_80740C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( f$ k- ~" L6 x" d" m
如果edx小于7eh则进行跳转到80740C0 妖城在线论坛7 i; ^' q0 A; w" N3 {

* E8 M+ k! m) T# ^) p' R7 m+ F1 ?# X( a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Push       ecx
. ~3 p$ e4 \0 I2 [, P魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov        ecx,7
* @4 R8 A6 Y& k4 H: f9 y. W给ecx赋值7 魔力私服,最新魔力宝贝私服技术交流" ~1 R- @: W, r* Y5 P
8 m/ [  Q8 R( _# G9 S. _2 C2 f7 T" z' `
Push              edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ g6 S! q1 l* w
Mov        eax,edx
  ~5 d6 W+ I# g; X把当前等级+1的值给eax
: H. q6 x: F* Y+ z4 b9 |4 O* |0 ~魔力私服,最新魔力宝贝私服技术交流
0 J7 @4 t+ ~: v) k+ [8 D- w5 @5 x魔力私服,最新魔力宝贝私服技术交流Imul              eax,edx 妖城在线论坛/ a3 G) G6 g& I7 S  H
把eax与edx相乘,结果存在eax
4 k) P9 l# L5 \$ Bbbs.mocwww.com
/ N; b; L2 E( O9 `: X6 Ibbs.mocwww.comImul              eax,ecx 魔力私服,最新魔力宝贝私服技术交流& b, C( w; v9 |6 D
把eax与ecx相乘,结果存在eax
$ w, ^' M7 M' `5 ^3 ]bbs.mocwww.com
" K9 ^# G% L; a3 D$ c9 ~" L8 M* @+ Bbbs.mocwww.comLeave —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' U2 H1 f) L& h) s: |
Retn
$ _) H3 C+ H, i4 x$ u" Y+ Cbbs.mocwww.com退出这个过程吧,大概
: E, M# K$ ]2 c7 S5 B妖城在线论坛
$ U- c8 s/ A( L) z; z妖城在线论坛Mov        eax,dwordptrLevelUPtbl[edx*4]
/ R, {8 L5 J) Q5 f" L—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这里是读取经验表的内容给eax,也就是查表读经验 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! h0 N. D/ N0 Q1 a2 B7 M# j1 ]
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 `' G9 I+ Y7 w* u
jmp     short loc_80740B6
( f$ }; Y6 I5 k- u' T7 _+ S' y! I, o  B魔力私服,最新魔力宝贝私服技术交流强制跳转到80740B6
2 `7 z0 \8 G! w+ {魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
: C0 K# {: w0 A; R+ L# H  zbbs.mocwww.com好了,这段代码就这点意思,逻辑上不难理解。
% C0 q2 R; e0 K: I. O' Y* [虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 妖城在线论坛1 C6 {- B  A) f3 y; e& {) \6 w" I" F

1 q2 Y+ @: j, Z2 H& `5 k; L6 mbbs.mocwww.com分析完了之后开始修改了,上面的代码具体作用如下:
- \% K: k* I9 }& S+ y6 }妖城在线论坛判断等级下一级是否小于7eh,是则跳转到查表。
! Z. F2 Z4 w: F& @  S, z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表否的话也就是大于7eh时,按照下面算法运算 魔力私服,最新魔力宝贝私服技术交流) e. @4 E- g! _  F' n6 C
.text:080740A3                 push    ecx
1 ?9 b' H$ ]% x4 F& k2 f" Y8 K妖城在线论坛.text:080740A4                 mov     ecx, 7
3 `+ D- Y0 J4 z2 X' h# \妖城在线论坛.text:080740A9                 push    edx
+ ]9 `2 {% x/ V1 S5 h- g! v2 [, }—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AA                 mov     eax, edx
  j3 L4 v) g, c2 A: ?4 i8 X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AC                 imul    eax, edx
- m. K6 k, h) ~! `' t! O4 t6 x1 D魔力私服,最新魔力宝贝私服技术交流.text:080740AF                 imul    eax, edx bbs.mocwww.com1 K6 H! N8 ^9 B% B% Y0 g( F
.text:080740B2                 imul    eax, ecx
- j$ F# X2 a: U- i& s妖城在线论坛也就是eax的三次方乘以ecx,这里可以改成我想要的。 妖城在线论坛" }$ `% i5 k% J

! S3 s  z$ t* l7 W( p/ m& _—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート我的目标是改称等级的四次方除以50,但是问题来了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& L5 y$ [  e5 P" `' L
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
  K* B% l: d0 g; q: p0 K9 W5 Y
* M9 D" o4 i- U8 d3 l8 H5 f* h% P妖城在线论坛.text:08074098                 public CHAR_GetLevelExp
& `) B8 L5 f6 P& Z% R妖城在线论坛.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ G4 Y8 B2 d: C6 u
.text:08074098               魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- J# A7 W, {9 @. z7 j
.text:08074098                 push    ebp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 X4 r7 @/ o* [) @
.text:08074099                 mov     ebp, esp
. ^2 p8 H, C6 L) P; b; L1 n魔力私服,最新魔力宝贝私服技术交流.text:0807409B                 mov     edx, [ebp+8]
0 n& i8 B- T, E7 i( P2 k妖城在线论坛.text:0807409E                 cmp     edx, 0FFh
! W, T0 H  S0 q; ^) \. E妖城在线论坛.text:080740A4                 jg      short loc_80740C0 bbs.mocwww.com* F" `4 e0 V+ S6 b0 V3 H: L$ h  \
.text:080740A6                 push    ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 S  \* H: ?( E' j6 N9 u1 |
.text:080740A7                 mov     ecx, 32h 妖城在线论坛7 g1 y4 O: h7 n
.text:080740AC                 push    edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- }# R1 n8 t2 P% O+ W8 Y1 p: G
.text:080740AD                 mov     eax, edx
3 e+ Q& ]: k2 e) A, r$ x  J魔力私服,最新魔力宝贝私服技术交流.text:080740AF                 imul    eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 D  I* z6 {# T+ l
.text:080740B2                 imul    eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 h# V3 F; J$ C2 t4 ^
.text:080740B5                 cdq 魔力私服,最新魔力宝贝私服技术交流; }/ d$ t& \1 N' v) A0 K
.text:080740B6                 idiv    ecx 魔力私服,最新魔力宝贝私服技术交流/ n1 h( z2 V, [3 t8 @
.text:080740B8                 mov     edx, [ebp+8] 3 C9 t2 O0 Z, g2 N5 Z' Y
.text:080740BB                 imul    eax, edx 魔力私服,最新魔力宝贝私服技术交流( K3 ?% w+ ~+ J/ A  F
.text:080740BE 魔力私服,最新魔力宝贝私服技术交流: z% N* _3 Y/ ]4 B/ Z
.text:080740BE locret_80740BE:                     bbs.mocwww.com" c. I6 P% F/ `! {3 b7 a
.text:080740BE                 leave 妖城在线论坛. ^4 w. I$ E; ]0 i( o; O
.text:080740BF                 retn
; s9 R7 h* ~  B—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 loc_80740C0:                         魔力私服,最新魔力宝贝私服技术交流" f+ g% a& }+ K3 d9 _/ U
.text:080740C0                 mov     eax, 0FFFFFFFFh
7 j% V  O7 \* x/ b' kbbs.mocwww.com.text:080740C5                 jmp     short locret_80740BE 魔力私服,最新魔力宝贝私服技术交流# c- K: h( u7 F

2 M. e, {# U+ u3 s2 T# Z: G妖城在线论坛方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
9 `9 T, n' Q* Y' U4 O9 F8 KCmp              edx,0FFh 魔力私服,最新魔力宝贝私服技术交流4 S1 L9 C/ H3 a$ a0 l
Jg           shortloc_8074C0
0 e1 j) M2 ?" b3 ?. J魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表判断等级是否大于255是的话跳转80740C0 / m! U( _3 V$ I" [* d
否的话进入我们的等级公式: bbs.mocwww.com( w% o* e5 i# w4 A' {7 {! B
(等级*等级*等级除以50)*等级
0 S8 `5 T, }3 g! }7 @8 D& Xbbs.mocwww.com也就是等级三次方除以50再乘以等级 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, Q, H) b; p) {  W
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 3 [( B9 U; R6 Q4 J7 F4 ~6 Z
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 魔力私服,最新魔力宝贝私服技术交流, I( M) Y# k$ {$ r) M7 D+ N
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
# g0 H, W3 o6 |- }
* @& Y* A( h. ibbs.mocwww.com接下去做公式: 妖城在线论坛* h+ U  W- @; u; [: ]' [! S; u
Push              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验
& n! ^' _8 Y# Y% I/ C2 s; d妖城在线论坛Mov        eax,edx      将下一等级的值赋值给eax
7 B0 a8 m" ^8 e4 c( c+ |; E0 L6 }- c—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul              eax,edx          将eax,edx相乘,结果存到eax
( v7 J4 l  ]$ F# F2 e2 G& K妖城在线论坛Imul              eax,edx          同上 5 c& ]- `8 ~6 E2 R7 |+ j  z; j
Cdq                             这个做除法不加就会出错,用户登录后服务器当机
& _# I( I& }8 M, G3 g% AIdiv        ecx                eax除以32h算到50倍经验 妖城在线论坛; Q9 ~9 B, F8 W: G0 n3 z' C
Mov        edx,[ebp+8]    从新获取下一等级的值 妖城在线论坛9 u# q  ]# N) K* `) m& [
Imul              eax,edx          将eax,edx相乘,结果存到eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 x6 \4 W' k/ a1 {$ j, l5 L

& Q8 e' ~/ t4 h" A% V/ S+ _—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート好了,这样就完成了运算过程。
# o: s  Z4 u4 h8 w' nbbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& I8 I$ ~8 c  J8 I& Z1 `: J& K
.text:080740C0 loc_80740C0:                        
  u8 z. c. [3 B6 `1 R! Nbbs.mocwww.commov     eax, 0FFFFFFFFh
% K  o$ x8 c! G+ }. Rbbs.mocwww.comjmp     short locret_80740BE —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( q; |. l; Q) G7 ~- J# q: s
这一段代码就是等级超过你设置的上限之后返回-1。
& Q* I* z2 d: i0 Bbbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) C/ V8 \6 F+ A! M7 x

0 O8 z+ B. G3 \7 G1 H魔力私服,最新魔力宝贝私服技术交流下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 6 [) S/ \( w# H7 |0 e% U& p! K4 J
这里就要用到FlexHex了。 妖城在线论坛! F, n! d5 a% [0 q" v! Y. |

9 p1 ?! w& J$ B5 K% [妖城在线论坛首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% q; B5 z( \2 |3 D* c. `" ?; s) U
如下对应:
3 d1 M' F+ Q9 V( S4 o+ y0 Pbbs.mocwww.comCmp              edx,0ffh                       81  FA  FF  00  00  00
  ]6 U" J8 H0 X+ T+ M/ ?6 g& X魔力私服,最新魔力宝贝私服技术交流jg      short loc_80740C0         71  FA 5 ^9 C& G9 j3 x3 B6 Y* o) W' v4 o
mov     ecx, 32h                      B9  32  00  00  00
( `3 q1 Y/ A5 ~( x* k* W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 z5 F, G+ I  s3 Q
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 魔力私服,最新魔力宝贝私服技术交流' q  O# {  _6 B2 G: Y
这个挺有乐趣可以自己慢慢享受摸索。 妖城在线论坛* r" t6 v1 X  x- y& [

, n3 K; M$ E) A; x7 J( _- h妖城在线论坛以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

好文章, 可以帮很多入门的来修改~

TOP

看不懂.............

TOP

学习学习魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 l6 p; y/ [% g8 F; Q) v! {# P
谢谢楼主分享经验

TOP

感谢楼主分享,顶!

TOP

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

TOP

发新话题