史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   麻煩請會Visual C++ 6.0的朋友幫忙一下 (http://forum.slime.com.tw/thread160329.html)

mirrorman 2005-11-08 06:26 PM

麻煩請會Visual C++ 6.0的朋友幫忙一下
 
我用 W32Dasm 將一個由 Microsoft Visual C++ 6.0 所寫的小程式反組譯,

想把裡面位址 00482525 的 JNE 指令改成 JE ,請問要如何修改?

還有能否告訴我幾個基本指令 JNE'JE'JMP''MOV,組譯成電腦的機械碼後,是哪些數字?

我是程式文盲,請各位幫忙一下,多謝....

這是我要修改的檔案和 W32Dasm

http://a0zk88p.hp.infoseek.co.jp/pix/smp5.jpg

mini 2005-11-08 08:18 PM

通常機械碼指令 只用一個Byte表示
所以 75因該是代表 jne
35 則是參數

http://66.102.7.104/search?q=cache:i...&lr=lang_zh-TW

mirrorman 2005-11-09 02:36 PM

感謝 mini 版主指教,真是獲益良多

mini 2006-01-10 02:08 PM

訂正前言 "通常機械碼指令 只用一個Byte表示"

由於 CPU不斷演進
所以新的指令 以一個Byte以不夠使用
比如 MMX 的指令就要兩個 Byte

只要使用 debug 就可了解了
請開啟DOS視窗輸入 debug
接著會出現 - 請輸入 a 進入組合語言編寫模式
接著想了解 mov 是何機械碼
打 mov ax,8 按[Enter]
接著按 Ctrl+C 離開組合語言編寫模式
接著輸入 g 上面的位址
即可得到
位址 B80800 MOV AX,0008
的顯示
所以推論 B8 就是 mov 的機械碼
過程如下

c:\>debug
-a
13F5:0100 mov ax,8
13F5:0103 ^C
-g 13F5:0100
AX 0008 BX ****
************** <---------此兩行暫存器值省略
13F5:0100 B80800 MOV AX,0008
-q
c:\>


所有時間均為台北時間。現在的時間是 03:40 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1