2012-01-21 25 views
0

我需要在某些Linux應用程序上使用某種授權,但我無法訪問其代碼庫。控制Linux應用程序啓動/許可

我在想什麼是有一個單獨的進程讀取許可證密鑰,並檢查該應用程序的可用性。然後我需要確保在每個受到尊重的應用程序的調用期間運行該進程。 Linux有一些功能可以幫助解決這個問題嗎?例如sudoers文件,其中我檢測到哪個用戶和哪個應用程序試圖啓動,並且如果滿足組合,則首先運行許可證進程檢查。

或者,我可以做這樣的事情不允許用戶自行啓動(命令行)應用程序,並迫使他們管到我的許可過程,所以:

在/ usr/bin中/ TM | license_process //然而'/ usr/bin/tm'會自行失敗

回答

-1

您可以編寫一個包裝程序二進制文件,執行檢查,然後將實際應用程序作爲該二進制文件的一部分鏈接,使用一些dlsym技巧可能能夠從包裝主要功能調用真正的主要功能。

IDEA

  1. 閱讀了關於ELF黑客:http://www.linuxforums.org/articles/understanding-elf-using-readelf-and-objdump_125.html
  2. 使用LD重命名你要保護訪問程序的主要功能。 http://fixunix.com/aix/399546-renaming-symbol.html
  3. 編寫一個包裝器,執行檢查並使用dlopen和dlsym調用真正的主體。
  4. 將真正的應用程序與包裝器連接在一起,作爲一個二進制文件。

現在你有一個應用程序有你的自定義檢查,有點難以打破,但並非不可能。

我沒有測試過這個,沒有時間,但有點趣味實驗。

+1

如果您沒有獲得版權持有者的明確同意,那麼這樣做很可能是「真實」應用程序的版權侵犯。 –

+1

「使用ld重命名主函數...」 - 首先「ld」對已經鏈接的可執行文件不能做任何事情,其次,重命名「main」將完全沒有意義:它的地址已經被記錄爲調用目標'_start'將會調用。 –

+0

當我寫了關於ld的內容時有些厭倦,我試圖做的是將應用程序與一段代碼以某種方式連接在一起進行檢查,我不得不同意你(@EmployedRussian)的說法,即大多數方法都是毫無意義的對付擅長編程的攻擊者。但它比任何類型的獨立過程都要好。 @EmployedRussian關於如何使用objcopy將真正的應用程序包含到包裝中,並在某種程度上更改指令指針(如果檢查不失敗),或者退出時,會發生什麼想法。 –

2

我需要採用某種形式的許可在某些Linux應用

請注意,許可證檢查一般會花費你方式更多(在支持和管理),比他們的價值:人誰想要繞過支票並有一定的技巧會這樣做,而且不是支付牌照,如果他不能反正(也就是說,按不是實施一個牌照計劃你一般是而不是任何離開任何在t上的錢他表)。

我沒有訪問其代碼庫的權限。

,使你的任務幾乎是不可能的:只有有效拷貝保護方案需要你重建整個應用程序,使之檢查將是攻擊者厭倦在這麼多不同地方的牌照和消失了。你可以閱讀有關這樣的計劃here

我在想,有一個單獨的進程閱讀許可證密鑰,並檢查該應用程序的可用性。

任何這樣的方案都將被熟練的stracegdb在不到5分鐘的時間內繞過。不要浪費你的時間。

相關問題