2015-06-24 89 views
1

昨天,我的經理要求我查找並刪除所有對「公司先前化身」的引用,這些引用出現在我們爲幾周內推出的產品生成的二進制文件中。這讓我想知道爲什麼在編譯後的獨立二進制文件中,人們可讀的內容太多了,以及是否有一種簡單的方法來隱藏它,以便程序的內部不會公開,可以這麼說(在至少對任何使用文本編輯器打開它或者查看文件內容的人來說)。這裏是什麼,我的意思是一些例子:Obsfucation of code in commercial product

"WGL_3DFX_multisample    À  @  ð>Unknown OpenGL error 
    GL_INVALID_FRAMEBUFFER_OPERATION" 

「無法關閉,由於取消定型語句不是錯誤的SQL邏輯錯誤或丟失的數據庫訪問權限被拒絕回調請求的查詢中止數據庫被鎖定數據庫表被鎖定的記憶嘗試寫入只讀數據庫中斷的磁盤I/O錯誤數據庫磁盤映像格式錯誤數據庫或磁盤已滿無法打開數據庫文件表包含無數據數據庫模式已更改字符串或BLOB超出大小限制約束失敗數據類型不匹配「

"flowChartDelay flowChartDisplay flowChartDocument flowChartExtract flowChartInputOutput flowChartInternalStorage flowChartMagneticDisk" 

該文件的大部分是人類無法理解的nsible這樣的東西,這是比較什麼,我想從二進制期待:

"âÀÿ? ‰•þÿÿÇ…」þÿÿ ë‹…」þÿÿƒÀ‰…」þÿÿ‹」þÿÿ;Mà}`‹U‹‚¨ ‹」þÿÿ¶ƒúuF‹E‹ˆ° ‹•」þÿÿ·Q¯…ŒþÿÿÁ艅Œþÿÿ‹M" 

我想通了,我可以簡單地做一個搜索和替換和隨機替換「我們不希望字符串」相同長度的文本和程序將運行良好,這可能比對我們的來源進行500次編輯更容易,使其與公司當前的法律實體狀態保持一致(有一噸稱爲name_of_previous_company_foo())的函數,也比試圖將一些奇特的混淆工具集成到我們複雜的propritary構建系統中更容易,但它不是一個特別優雅的解決方案,我仍然想知道是否有辦法讓我們的二進制文件變成更像黑盒子的東西,有人不能用文本編輯器打開它,看看我們的功能離子和類名。

+0

對於哪種語言? –

+0

我們在談論像elf或exe這樣的可執行文件嗎? Upx可能是解決這個問題的方法,除非有人知道這一點。 Upx壓縮和編碼您的二進制文件 – Marged

+0

可執行文件是exe,elf,apk和mach-o,並且語言是C,其中一些Java引發的東西在android一側的某處。我們有一個延伸多年的大型代碼庫,我們通過一個複雜而多毛的構建系統爲android,iphone,ios,linux和windows生成二進制文件,該系統採用我們通用的主要代碼並創建特定於平臺的二進制文件與客戶特定的功能。我嘗試了upx,它正是我所期待的,但它無法處理apk文件,所以我需要爲這些解決方案找到解決方案。 – peter9024

回答

0

人們爲「商業軟件」構建源代碼混淆器工具,該工具可以擾亂字符串和標識符,因此它們不易從二進制文件中讀出,但仍然可以用作它們打算使用的字符串。

這樣的混淆器往往是特定於語言的,因爲它們必須處理語言結構的細節。

谷歌「源代碼混淆器」,你會發現很多。