事件:
開發人員提供好開發的軟件(如軟件是下發的),需要適配讀卡器,軟件功能需要兩種讀卡器,需要兩種卡種類型,硬件如:德卡,華旭等。本次遇到的解決問題發現,兩個讀卡器放自己硬件配飾的dll是可以獨立讀卡的,替換時發現他們***有壹個ssse32.dll的文件。就是硬件讀卡器的設備文件。
過程:
1、用dll to c(dll2c)反編譯了ssse32.dll文件,發現文件的確不兼容的依據,某壹ssse32.dll再次依賴下層的dll(非系統層的dll)。
2、利用eXeScope、depends等工具查看硬件提供的硬件文件的dll依賴順序。靠經驗查看
3、思路,如果有條件查看相關源代碼,看看都可以調用哪個文件來執行ssse32.dll,本次無法借鑒源碼。
4、由於設備醫保讀卡器,發現有個yibao.dll,醫保都可以配送壹個單機讀卡軟件。足各刪除dll,形成文件的最少運行。
5、嘗試了把醫保讀卡器文件放到下層目錄(子目錄),軟件配合調用動態庫路徑,由於是PB開發,未果。
6、還嘗試了使用查看工具PEiD、Die工具嘗試是否有加殼,用ollydbg查看相關匯報執行。
思路:
1、在程序調用時更換ssse32.dll,無源碼,執行力難,且有的環境開機就加載dll了;
2、反編譯兩個ssse32.dll,重新生成新的壹個ssse32.dll,合並要求反編譯技術、匯編開發等技術;
3、找到調用ssse32.dll的上層文件,把上層文件裏面調用的ssse32.dll改名。
解決:
按照思路中的1、2難度高,可行性高的方法還是思路3。先找到exe和ssse32.dll中間的文件yibao.dll,再次反編譯,看ollydbg匯報執行,細節不談,未果。
何不用winhex直接查看,果然在yibao.dll 中找到ssse32.dll,修改成ssse33.dll,目錄下把醫保提供的ssse32.dll改成ssse33.dll復制到軟件根目錄。切記winhex修改文件數據不要加長,會影響結構。保持長度壹樣即可。故障技術上解決。