2014-03-26 168 views
21

我過去曾多次使用「十六進制編輯器修改DPB到DPx」來繞過舊Excel VBA項目(.xls)上的VBA項目安全性,所以我絕對知道該怎麼做它並知道我可以做到這一點。通過十六進制編輯器Excel Excel VBA密碼

但是我昨天剛試過,發現它不再起作用。我嘗試使用Excel 2011(Mac)和Excel 2003(Windows),並且在兩種情況下,我都得到了相同的行爲;

打開VBA編輯器給出了一條消息,說該項目已損壞,該項目將被刪除。 VBA編輯器隨即打開,當然,所有VBA都從模塊和工作表中除去。

我已經嘗試了這種方法: Is there a way to crack the password on an Excel VBA Project?(即與已知的密碼創建一個電子表格,然後在相關領域複製。)

但找到我的「假的「GC」的長度密鑰創建'電子表格比我希望訪問的電子表格(「目標」)上的「GC」鍵更短。我已經在其他地方讀過,如果「目標」鍵長的話,你可以將「虛擬」鍵放到相同的長度上,但是我沒有什麼可以找到的,以說明在相反的情況下做什麼。

所以 - 我的問題;

  • 是否有人知道是否應用了使「十六進制編輯器」方法無效的修補程序?
  • 任何人都可以幫助當假鍵長於目標鍵時該怎麼辦?
  • 其他人可以提供任何更新的現場到這個問題?

編輯 現在已經解決了這個(在某種程度上)我想我在這裏添加一個總結。

HAVE NOT之所以能得到這個在Mac的Excel工作有關更改從filname.xlsm該文件fielname.zip 2011年的東西,然後再返回導致損壞的Excel文件,該文件的Excel 2011拒絕承認。

通過將.xlsm文件名修改爲.zip,編輯vbaproject.bin文件中的DPB = AND GC =值,可以通過修改舊的Windows計算機(XP/Excel 2007)十六進制編輯器,然後將該文件保存在.zip文件中,然後將.zip重命名爲xlsm。我使用了Ricko在底部給出的「測試」示例,它與ONE CAVEAT一起工作 - 我必須'填充'我的GC值,使其與我的文件中的原始長度相同。

ORIGINAL:  GC="0F0DA36FAF938494849484" 
NEW: (TEST) GC="BAB816BBF4BCF4BCF4" (from Ricko below) 
NEW: (TEST) GC="BAB816BBF4BCF4BCF40000" (what i used and what worked) 
+0

不是StackOverflow問題。也許適用於http://superuser.com/ – Selcuk

+3

我在StackOverflow上詢問的原因是因爲關於此主題的許多有用信息可以在StackOverflow中找到。如果Excel中的VBA項目的事態發生了變化,我認爲這個問題和隨後的答案在SO中是有意義的,因爲在那裏有很多相關的問題。如果它不能留在這裏,那麼我可以應付,但我確實認爲它有價值( – Andrew

+0

FWIW)在嘗試DPx方法時遇到同樣的問題。 –

回答

37

我有你的答案,因爲我只是今天同樣的問題:

有人提出,改變了VBA保護密碼爲「宏」的工作VBA代碼,所有的Excel文件,其中包括.XLSM (2007+版本)。你可以通過瀏覽他的代碼來了解它是如何工作的。

這傢伙的博客:http://lbeliarl.blogspot.com/2014/03/excel-removing-password-from-vba.html 下面是做工作文件:https://docs.google.com/file/d/0B6sFi5sSqEKbLUIwUTVhY3lWZE0/edit

從一前一後,從他的博客中粘貼:

對於Excel 2007/2010(。xlsm)文件執行以下步驟:

  1. 創建一個新的.xlsm文件。
  2. 在VBA部分,設置一個簡單的密碼(例如「宏」)。
  3. 保存文件並退出。
  4. 將文件擴展名更改爲'.zip',由任何存檔程序將其打開。
  5. 找到文件:'vbaProject.bin'(在'xl'文件夾中)。
  6. 從檔案中提取它。
  7. 用十六進制編輯器打開剛剛提取的文件。
  8. 查找並複製參數DPB(引號中的值)的值,例如: DPB =「282A84CBA1CBA1345FCCB154E20721DE77F7D2378D0EAC90427A22021A46E9CE6F17188A」。 (此值爲「宏」密碼生成,您可以使用此DPB值跳過步驟1-8)

  9. 對於密碼未知的文件(要解鎖的文件)執行步驟4-7。在價值這個文件

  10. 變化DBP值,可以在第8步

    如果複製值比加密文件更短,你應該填充缺失的字符0(零)已複製。如果價值更長 - 這不是問題(按原樣粘貼)。

  11. 保存 'vbaProject.bin' 文件,並退出十六進制編輯器。

  12. 用已修改的文件替換現有的'vbaProject.bin'文件。從「.ZIP」回「.XLSM」
  13. 現在
  14. 變化extention,打開Excel文件,你需要看到在VBA代碼。對VBA代碼的密碼 將只是宏(如上例我在這裏展示)。
+0

這比「神聖的銀行轉帳」更好,彼得波波夫牧師承諾我會收到。謝謝。 –

+0

GC也必須複製,否則這不起作用。 – LucasSeveryn

+0

我會繼續來自LucasSeveryn和Ricko的評論。截至2015年3月,它既需要AND,博客上面列出的文檔也沒有被更新來執行此操作(即,除非您更新以編輯GC,否則它將不起作用)。此外 - 這不適用於Excel 2011(適用於Mac)。 – Andrew

2

如果您使用.xlsm文件而不是.xls,則可以使用舊方法。我試圖修改vbaProject.bin.xlsm幾次使用DBP->DBx方法通過它沒有工作,也改變值DBP沒有。所以我非常驚訝,以下工作:
1.保存.xlsm.xls
2.在.xls上使用DBP->DBx方法。
3.不幸的是,當使用修改的.xls文件時可能會發生一些錯誤,我必須將.xls保存爲.xlsx並添加模塊,然後另存爲.xlsm

12

新版本,現在你也有GC = 嘗試與

DPB = 「DBD9775A4B774B77B4894C77DFE8FE6D2CCEB951E8045C2AB7CA507D8F3AC7E3A7F59012A2」 GC = 「BAB816BBF4BCF4BCF4」

更換兩DPB和GC

密碼將被「測試」

+1

感謝提示Ricko - 你說得對。如果未複製GC,IT將無法工作。我完全按照您在此處添加的方式進行復制,並且它在Excel 2007上運行得很好。 – Andrew

+2

這是否仍然有效?我試圖改變我的GC和DPB,但有兩個問題... 1. bin文件中的兩個值的大小都不一樣,因此輸入這些需要的文件大小以進行更改。 2. DPB值不以「結尾,但以它開頭......它看起來像這樣:'Name =」VBAProject「.. HelpContextID =」0「.. VersionCompatible32 =」393222000「.. CMG =」5250FEAE54B254B251B751B7「 ..DP =「A4A60800084F254F25B0DB50250596D1EDAC ....,」' –

+1

如果粘貼值比現有值短,請用零填充間隔 – edokan

相關問題