2013-07-23 32 views
1

我一直在使用Enterprise Architect工具執行與逆向工程相關的項目。但是,當我使用C/C++語言執行逆向工程時,會發生未知錯誤。錯誤日誌遵循:我正在使用Enterprise Architect,並且在C/C++中有一些逆向工程問題

There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\7z\7zDecode.cpp on line 91. Unexpected symbol: * 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\7z\7zEncode.h on line 36. Unexpected symbol: * 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\7z\7zHandler.h on line 46. Unexpected symbol: public 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\7z\7zIn.h on line 210. Unexpected symbol: baseOffset 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\7z\7zOut.h on line 103. Unexpected symbol: & 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\7z\7zUpdate.h on line 74. Unexpected symbol: * 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Cab\CabBlockInStream.h on line 37. Unexpected symbol: void 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Cab\CabHandler.h on line 22. Unexpected symbol: private  
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Chm\ChmHandler.h on line 22. Unexpected symbol: private  
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Chm\ChmHeader.cpp on line 14. Unexpected symbol: { 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Chm\ChmIn.h on line 208. Unexpected symbol: PURE 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Com\ComHandler.h on line 23. Unexpected symbol: STDMETHOD 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Common\CoderMixer2MT.h on line 59. Unexpected symbol: ISequentialInStream 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Common\CoderMixer2ST.h on line 43. Unexpected symbol: GetInStream 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Common\CoderMixerMT.h on line 50. Unexpected symbol: ISequentialInStream 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Common\CrossThreadProgress.h on line 34. Unexpected symbol: const 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Common\DummyOutStream.h on line 20. Unexpected symbol: const 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Common\InStreamWithCRC.h on line 19. Unexpected symbol: void 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Common\OutStreamWithCRC.h on line 22. Unexpected symbol: const 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Common\OutStreamWithSha1.h on line 22. Unexpected symbol: const  
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Hfs\HfsHandler.h on line 22. Unexpected symbol: } 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Iso\IsoHandler.h on line 25. Unexpected symbol: STDMETHOD 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Nsis\NsisDecode.h on line 41. Unexpected symbol: * 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Nsis\NsisHandler.h on line 19. Unexpected symbol: public 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Nsis\NsisIn.h on line 136. Unexpected symbol: *  
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Rar\RarHandler.h on line 19. Unexpected symbol: public 
You may need to define a language macro.  
There was an error parsing C:\Users\soo\Desktop\7z920\7zip\Archive\Rar\RarVolumeInStream.h on line 26. Unexpected symbol: void  
You may need to define a language macro. 

檢查錯誤日誌,我想大多數錯誤的由代碼產生要由預處理器,「#define」,「#ifdef」等處理,例如。

我該如何解決這個問題? Enterprise Architect反向代碼是否可以由預處理器處理?

我還有一個問題。

當一個文件在反轉過程中在某一行產生錯誤時,我發現Enterprise Architect不會在那個文件中的錯誤行之後進行處理。

是否有一個函數可以跳過該錯誤行來連續處理該文件?

+0

現在有一個RE的特定網站。嘗試http://reverseengineering.stackexchange.com – Antimony

回答

1

首先,C和C++是兩種完全不同的語言,EA會如此對待它們。看來您正在嘗試導入C++源代碼,因此請確保您沒有在「導入源代碼目錄」對話框中選擇C作爲源類型。其次,語言宏是在Settings - Preprocessor Macros中定義的。再次確保您選擇正確的語言。

定義的預處理器宏在解析過程中被EA跳過,而不是展開(並且只能指定宏名稱,而不是右側)。所以如果你的代碼包含很多聰明的宏,它們將不會包含在模型中。如果這是不可接受的,請通過預處理器運行代碼,然後導入結果,該結果現在將不含宏。

相關的幫助頁面是軟件工程 - 開發工具 - 其他設置 - 語言宏。

最後不,你不能告訴EA繼續解析遇到問題的文件。它跳出並轉到下一個。