none
vb.net運用機械碼 RRS feed

  • 問題

  • 我自己有寫過些外部掛載程式,常用到vb.net中ReadProcessMemory 及 WriteProcessMemory等函數,不過我自己比較好奇的是有些外部掛載程式是運用到機械碼,因此有幾個問題想詢問下~~

    假設有段機械碼是 mov [004f122c],ecx ,我如果想得知eax的值,便是使用函數讀寫 &h004f122c ,想問的是,vb.net中是否能夠直接讀寫ecx?而如果在vb中使用機械碼,其功用何在?是執行速度上比較快?如果vb.net中使用機械碼又該如何調用?有無此類範例可尋?

    2010年12月30日 上午 06:46

解答

  • 有種叫 VB 寫組語才做的到的事的 fu..

    VB.NET 和 C# 都是在 Managed CLR 環境操作,基本上除了 C# 宣告 unsafe 以外,不可能讓你去存取記憶體或暫存器,ReadProcessMemory 和 WriteProcessMemory 則是 API,在 CLR 合理的控管下用 P/Invoke Service 來呼叫,不代表可以直接存取記憶體,更遑論暫存器 ...

    另外,VB.NET 產生的是 MSIL,而不是純機器碼,想要寫出純機器碼,請使用 C/C++,利用 C/C++ Compiler 和 Linker 來產生真正的機器碼,或是用組語來寫。VB.NET 可以呼叫的原生程式是 native DLL。


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    目前籌建雲端運算學堂 (studyazure.com) 中...
    2010年12月30日 上午 07:05
    版主

所有回覆

  • 有種叫 VB 寫組語才做的到的事的 fu..

    VB.NET 和 C# 都是在 Managed CLR 環境操作,基本上除了 C# 宣告 unsafe 以外,不可能讓你去存取記憶體或暫存器,ReadProcessMemory 和 WriteProcessMemory 則是 API,在 CLR 合理的控管下用 P/Invoke Service 來呼叫,不代表可以直接存取記憶體,更遑論暫存器 ...

    另外,VB.NET 產生的是 MSIL,而不是純機器碼,想要寫出純機器碼,請使用 C/C++,利用 C/C++ Compiler 和 Linker 來產生真正的機器碼,或是用組語來寫。VB.NET 可以呼叫的原生程式是 native DLL。


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    目前籌建雲端運算學堂 (studyazure.com) 中...
    2010年12月30日 上午 07:05
    版主
  • 有種叫 VB 寫組語才做的到的事的 fu..

    VB.NET 和 C# 都是在 Managed CLR 環境操作,基本上除了 C# 宣告 unsafe 以外,不可能讓你去存取記憶體或暫存器,ReadProcessMemory 和 WriteProcessMemory 則是 API,在 CLR 合理的控管下用 P/Invoke Service 來呼叫,不代表可以直接存取記憶體,更遑論暫存器 ...

    另外,VB.NET 產生的是 MSIL,而不是純機器碼,想要寫出純機器碼,請使用 C/C++,利用 C/C++ Compiler 和 Linker 來產生真正的機器碼,或是用組語來寫。VB.NET 可以呼叫的原生程式是 native DLL。


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    目前籌建雲端運算學堂 (studyazure.com) 中...
    您的意思是, vb只能調用dll下編寫的機械碼...那我大概了解,還以為可以直接使用機械碼放入程式段中,看來是誤會了~ 謝謝您的解說,讓我對vb有更深一步的瞭解
    2010年12月30日 上午 11:37