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

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

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

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

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

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

Q 0 p2 j- r6 a* G# O  s5 u6 h1 U

3 K- K8 [" L. a0 @6 A" d5 {有2个问题,
' S5 v. v" Y! Y5 t1.用od调试的时候,我发现jmp指令的机器码(Hex 数据)不唯一,比如说 + n6 P# g' g' o) |! M6 u, e* j" d
jmp 00485ada 对应的机器码每次都不一样, 5 L; H% n7 r1 c& o! z
004A2FCE ^ E9 072BFEFF jmp 00485ADA
3 Q* D& W4 O# s  q. i$ K; _* L004A2FD3 ^ E9 022BFEFF jmp 00485ADA : r5 n* I2 J! ^6 K
004A2FD8 ^ E9 FD2AFEFF jmp 00485ADA
& Z; H0 ]1 V# }+ j' [004A2FDD ^ E9 F82AFEFF jmp 00485ADA
5 O, \9 ]5 u5 U) E8 Q$ Q% [004A2FE2 ^ E9 F32AFEFF jmp 00485ADA
' I1 M: k" [; ], ?" p004A2FE7 ^ E9 EE2AFEFF jmp 00485ADA
5 c/ v& W) P0 b! l  p/ X6 A/ K, g我从数据窗口中输入相同的机器码所对应的 jmp指令跳转的地址就不是原来的地址了,请问如何解决? ! o9 O) {& b1 ?$ R2 @' Y* r
2,如果我用vb向内存写这条指令应该怎样写? 9 s$ V# a. n: Z
比如我要向内存地址444AE2中写入机器码E9 EE2AFEFF,下面的问号部分应该怎么写?谢谢`` 5 i! _- k( R1 ]$ l* V
WriteProcessMemory(phandle, ByVal &H444AE2, ????, 4, 0&)
& G/ \$ U! W" d
- X4 o3 |# A+ _( k) r& zA / b" U' @+ e. M9 r. |% _
直接的jmp分3种 5 z" ], e: G/ x+ M7 K
Short Jump(短跳转)机器码 EB rel8 9 [, J; `9 r8 v% I
只能跳转到256字节的范围内 5 R+ H. o4 v! P' T( @0 F/ t# h
Near Jump(近跳转)机器码 E9 rel16/32 # k2 `+ F# t3 Z' A3 C4 E7 i- G
可跳至同一个段的范围内的地址
; u, r- K4 [" `6 x+ t/ @Far Jump(远跳转)机器码EA ptr 16:16/32 + Y" q+ J" C3 u% L/ W4 M
可跳至任意地址,使用48位/32位全指针
* q& F, K; ?+ j9 L; v3 }; ]* Y. o, v* v
要注意的是,短跳转和近跳转指令中包含的操作数都是相对于(E)IP的偏移,而远跳转指令中包含的是目标的绝对地址,所以短/近跳转会出现跳至同一目标的指令机器码不同,不仅会不同,而且应该不同。而远跳转中包含的是绝对地址,因此转移到同一地址的指令机器码相同 9 U0 A3 ^7 |# c
---------------------------------------------------------------

+ z' I5 \$ g" w3 J下面的指令是这样计算偏移的.
9 V1 p0 u, Q5 h3 F004A2FCE    ^ E9 072BFEFF  jmp    00485ADA * G2 v% R% b! w: f
                ========
: P% O* @$ X" Q  x5 G4 m485ADA-4A2FCE=  FFFE2B0C  这里只是指向当前指令的IP处,实际计算跳转地址要去
1 E' V" P( _+ i$ w5 ~% s掉当前指令的长度,当前的跳转指令需要5个字节,FFFE2B0C-5=FFFE2B07
$ p& M% B. K; @
8 U, ^- |, \# d6 T$ p- b注意颠倒顺序,高位在后,就是了.
; c( h, d4 p, e以下同. 1 [8 A0 J6 D+ ]- u4 T/ g

5 S% n2 y7 J6 w% M  ^004A2FD3    ^ E9 022BFEFF  jmp    00485ADA

) P, D: f! E- n# B, u/ N' q2 a---------------------------------------------------------------- & L7 g- {9 O1 M
有一个叫opcoder的程序,可以计算跳转对应的机器码
9 X- h. K2 Y/ n6 T----------------------------------------------------------------
5 [  P" ^; ^4 |9 v. j2 H补充一句,因为(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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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