|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2005-11-08, 06:26 PM | #1 |
|
麻煩請會Visual C++ 6.0的朋友幫忙一下
我用 W32Dasm 將一個由 Microsoft Visual C++ 6.0 所寫的小程式反組譯,
想把裡面位址 00482525 的 JNE 指令改成 JE ,請問要如何修改? 還有能否告訴我幾個基本指令 JNE'JE'JMP''MOV,組譯成電腦的機械碼後,是哪些數字? 我是程式文盲,請各位幫忙一下,多謝.... 這是我要修改的檔案和 W32Dasm |
送花文章: 0,
|
2006-01-10, 02:08 PM | #4 (permalink) |
管理版主
|
訂正前言 "通常機械碼指令 只用一個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:\> |
送花文章: 2013,
|