设为首页收藏本站官方微博

【汉化资料】关于OD调试Jmp指令的问题

[复制链接]
查看: 1560|回复: 0
打印 上一主题 下一主题

【汉化资料】关于OD调试Jmp指令的问题

跳转到指定楼层
楼主
发表于 2009-1-25 11:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

【汉化资料】关于OD调试Jmp指令的问题

Q   w' g: Q' L, }1 `' x1 t

- m& m7 |9 q4 Q1 |# P! m1 `有2个问题,
6 P5 h/ l; g& R" v1.用od调试的时候,我发现jmp指令的机器码(Hex 数据)不唯一,比如说 3 `9 s" K0 _& f- C+ q" p" n
jmp 00485ada 对应的机器码每次都不一样,
9 P& i7 v2 K5 Q  P/ C4 V% `) }004A2FCE ^ E9 072BFEFF jmp 00485ADA 9 @0 A0 g! s, E" s
004A2FD3 ^ E9 022BFEFF jmp 00485ADA
0 j% A$ w3 ?: {  _& Z- M004A2FD8 ^ E9 FD2AFEFF jmp 00485ADA
# k/ l/ G  Q! m: u004A2FDD ^ E9 F82AFEFF jmp 00485ADA 7 n& K6 a- r. c. `5 }1 _
004A2FE2 ^ E9 F32AFEFF jmp 00485ADA 0 V- A: M, ]: E$ R: ]
004A2FE7 ^ E9 EE2AFEFF jmp 00485ADA
. V# s+ |; c; b: `% X3 n; D$ ^" b我从数据窗口中输入相同的机器码所对应的 jmp指令跳转的地址就不是原来的地址了,请问如何解决? / U  w1 @8 A9 z- S
2,如果我用vb向内存写这条指令应该怎样写? 9 D, C' [3 e8 E& K8 b
比如我要向内存地址444AE2中写入机器码E9 EE2AFEFF,下面的问号部分应该怎么写?谢谢`` 5 O- K/ M& R$ b  D1 |
WriteProcessMemory(phandle, ByVal &H444AE2, ????, 4, 0&) 0 f& R; h) Z+ j) v* |' f! H
! `% h7 g  F% S
A 1 Z0 m7 R; y. ^6 P0 K
直接的jmp分3种 3 o* h. W: {" b, g" W" f- h
Short Jump(短跳转)机器码 EB rel8 - a3 [) v8 b2 g$ }1 {+ Z
只能跳转到256字节的范围内 3 g* {4 k5 }; B! `% b! f$ S
Near Jump(近跳转)机器码 E9 rel16/32
# \% w+ f: B' U  d; w; f7 R# u( H9 f可跳至同一个段的范围内的地址
# N3 W, Y7 ~0 s1 ^; ~! I0 m8 j; KFar Jump(远跳转)机器码EA ptr 16:16/32
& K) k4 F" @4 l, Q4 ]可跳至任意地址,使用48位/32位全指针 $ P2 A% L9 z% q3 [9 c$ ~
$ n# ]) `' g) S' r( ^' x8 w
要注意的是,短跳转和近跳转指令中包含的操作数都是相对于(E)IP的偏移,而远跳转指令中包含的是目标的绝对地址,所以短/近跳转会出现跳至同一目标的指令机器码不同,不仅会不同,而且应该不同。而远跳转中包含的是绝对地址,因此转移到同一地址的指令机器码相同 / d  Y6 c; z) j! K/ F: |
---------------------------------------------------------------

; ]7 m; e$ I3 S( x; ]5 x- N下面的指令是这样计算偏移的. ( L3 {/ u- w) q9 I
004A2FCE    ^ E9 072BFEFF  jmp    00485ADA 2 Y: z4 @3 E4 A5 T4 D' z  u" E8 z
                ======== ' ?; c2 N4 J' _; [- p5 v
485ADA-4A2FCE=  FFFE2B0C  这里只是指向当前指令的IP处,实际计算跳转地址要去 ) p5 {3 @( n2 r+ S- t, H! d# a' d2 p( u
掉当前指令的长度,当前的跳转指令需要5个字节,FFFE2B0C-5=FFFE2B07 7 ]% ~2 p; E3 Q9 P
8 F" H1 m) V* J  P% Z
注意颠倒顺序,高位在后,就是了.
8 c2 e; D( M: w以下同. 9 ?$ h& A8 o% ^' ]2 k' X
. R5 ]3 T( K, W% ?4 {- h1 [
004A2FD3    ^ E9 022BFEFF  jmp    00485ADA
+ l$ u7 d# X/ ^; O- {. V# F( C1 T: y
----------------------------------------------------------------
6 M: _0 I0 V8 Z8 o0 f有一个叫opcoder的程序,可以计算跳转对应的机器码 4 U& P1 z0 r3 M
----------------------------------------------------------------
* \6 I8 c! W5 Z- q) i/ ?补充一句,因为(E)IP总是指向下一条指令,所以相对偏移 = 目标 - (E)IP
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表