2013-08-28 54 views
0

我們可能都已經使用(遲早)參數來定義應用程序應該如何啓動或向其添加更多信息。您可以使用中的lpParameters/lpCommandLine,或者直接在cmd中使用它,如MyApplication.exe -parameter1 -parameter2 -n什麼是參數的替代?

有時會出現與使用相同參數名稱用於不同目的的應用程序衝突,或者現在您甚至可以查看哪些參數已用於應用程序。我想知道是否可以在實際啓動之前(如參數)使用不同的方法來添加更多信息到我的應用程序。我對PE系統還不太瞭解,但是我想知道是否可以使用CreateProcess API並啓動應用程序暫停 - 寫入/更改/修改(使用WriteProcessMemory)常量的偏移量(或var ),我已經在我的源代碼中聲明瞭(或類似的東西),並最終恢復它。

我相信這是可能的,但它配備了像一些問題:

  1. 如何/我在哪裏可以得到從PE文件偏移一個恆定的?
  2. 如果文件被打包/加密會發生什麼情況?
  3. 還有更多

所以最終的問題是 - 什麼將是參數的選擇嗎? (也許基於我的想法?!)

+2

因爲應用決定輸入是如何傳遞給它沒有替代遵守規則由特定應用程序授權。如果應用程序要求在命令行上傳遞參數,則必須在命令行上傳遞參數。顯而易見的是,你真正的問題是什麼? – IInspectable

回答

2

還有其他方法可以在開始運行時將數據傳遞到新進程,而無需事先竊取其內存。

How do I pass a lot of data to a process when it starts up?

Undocumented and hard-to-find information regarding the CreateProcess API call(向下滾動到「傳遞任意數據到一個子進程!」節)

+0

這是令人難以置信的!未公開的'StartupInfo'「hack」完成這項工作。甚至比我的想法更好。非常感謝你! –

+1

第二種方法 - 當一個有趣的閱讀 - 也是一個非常骯髒的黑客。該網頁甚至指出:*「顯然這種方法在64位Windows Vista下不起作用。」* – IInspectable