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

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

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

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

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

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

Q 8 R+ X+ O# S9 m6 p/ R# J5 u
3 K( ]' u, R( X2 Z9 B
有2个问题, " x# s; b- U% g+ b  V$ r
1.用od调试的时候,我发现jmp指令的机器码(Hex 数据)不唯一,比如说 * v8 |) ~( ~. s9 H* D0 y
jmp 00485ada 对应的机器码每次都不一样,
5 |6 q9 C" L! @7 E  [9 A004A2FCE ^ E9 072BFEFF jmp 00485ADA & W/ g1 U" _& z  {+ R; A
004A2FD3 ^ E9 022BFEFF jmp 00485ADA
& I9 r, p9 N3 M. H; e7 m004A2FD8 ^ E9 FD2AFEFF jmp 00485ADA 2 }" I' a) a1 o! w
004A2FDD ^ E9 F82AFEFF jmp 00485ADA
( a4 w- p: H: Y8 J004A2FE2 ^ E9 F32AFEFF jmp 00485ADA
. F# l' a* B$ i8 q004A2FE7 ^ E9 EE2AFEFF jmp 00485ADA
8 b7 H: u1 \: E  v/ k我从数据窗口中输入相同的机器码所对应的 jmp指令跳转的地址就不是原来的地址了,请问如何解决? 0 Q8 K" D. I/ _+ o2 X1 z4 N
2,如果我用vb向内存写这条指令应该怎样写?
) B) d9 x5 F( L比如我要向内存地址444AE2中写入机器码E9 EE2AFEFF,下面的问号部分应该怎么写?谢谢`` - x9 ~& r' O* L, r
WriteProcessMemory(phandle, ByVal &H444AE2, ????, 4, 0&)
1 s- g2 v* j1 u/ U2 [$ g) ?! J3 T: X: k& X; S( k
A
* b" Q' Q3 _# m- |& N7 @) y/ V直接的jmp分3种 4 n+ m$ _5 m& u4 `. ?
Short Jump(短跳转)机器码 EB rel8 ; l+ Z  O* b" V% H  s, v! S& [! ~
只能跳转到256字节的范围内
: s* e) i# o) c7 h0 INear Jump(近跳转)机器码 E9 rel16/32
: s7 F# w" P$ ^% _可跳至同一个段的范围内的地址
  t0 w. y1 D* ^) tFar Jump(远跳转)机器码EA ptr 16:16/32
6 D6 b) K/ z' m8 a: F( F$ H- w- ?, f( |( u  O可跳至任意地址,使用48位/32位全指针
0 d5 I9 D; W& t3 L$ W' k
) u. X3 x) x2 ?  p- M要注意的是,短跳转和近跳转指令中包含的操作数都是相对于(E)IP的偏移,而远跳转指令中包含的是目标的绝对地址,所以短/近跳转会出现跳至同一目标的指令机器码不同,不仅会不同,而且应该不同。而远跳转中包含的是绝对地址,因此转移到同一地址的指令机器码相同 3 D' M+ _7 o# b( z1 |3 {1 Q- Q
---------------------------------------------------------------

2 o6 U) z5 n! S下面的指令是这样计算偏移的.
: Y4 \. ^' p2 F0 Z5 K7 n# Q004A2FCE    ^ E9 072BFEFF  jmp    00485ADA
6 r' c& P! Q- _5 K9 v( j& {                ======== 7 a' c1 c1 L" q; ~4 F7 K
485ADA-4A2FCE=  FFFE2B0C  这里只是指向当前指令的IP处,实际计算跳转地址要去 8 D9 D; M" K" h& w' k3 O& p, `
掉当前指令的长度,当前的跳转指令需要5个字节,FFFE2B0C-5=FFFE2B07
% i4 `4 M2 `9 l( q4 [+ @$ h+ e' J" V, ~7 b3 J# Q* Z
注意颠倒顺序,高位在后,就是了.
4 P/ w7 ^0 S% X0 Q  S以下同.
7 B# p# n, h. F+ m, D5 G+ n" a5 x. {- ^1 Y& u% w  U( u8 S" N
004A2FD3    ^ E9 022BFEFF  jmp    00485ADA
/ ]& h( [5 h; L3 X) y, v3 i& |7 G
----------------------------------------------------------------
6 Z$ h3 o7 h4 F有一个叫opcoder的程序,可以计算跳转对应的机器码 . T* h* A3 ^5 G! F
---------------------------------------------------------------- % d( R; B% U  H" g, E6 ~, _( |
补充一句,因为(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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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