2024年11月19日 星期二

老工程師的技術生活(三十六) --- Bar 台逆向工程系列(一)

最近這一系列的相關留言突然變成熱絡了,那好吧,我們就從善如流的開個

系列文章來玩玩吧。我先整理一下之前的相關文章:

1.一份神秘禮物的開箱文(10/15/2015)

2.一份神秘禮物的開箱文 (補續篇)--- 談早年電玩機(01/01/2016)

3.老工程師的技術生活(三十三) --- 一篇文章的後續(Bar 台簡易解析)(09/01/2024)

後續我也會把相關工程資料開個連結給大家參與,其實我原本想用 Github 開個

群組,讓大家可以一起研究,但對於如何在Github 裡開個群組討論的方式,

還不是很熟練,所以就先暫時用雲端方式處理,接下來如果大家可以教我一下

如何在Github 裡開個群組的話?我就將相關資料整理到 Github 裡去。

其實我的工作是有用到 Github 的,但是別人開給我加入的,我自己還沒自己去

增加或管理一個 Github Repository,這部分好像也是要付費的才行喔?(封閉式)

----

首先先前有讀者跟我索取我手上機器的 Binary 檔案,他也非常熱心提供一些

程式碼反組譯工具給我,我就先在此分享一下他所提供的反組譯工具:IDA Pro.


喔~哪邊可以下載得到?你只要google 搜尋一下,應該就可以在對岸的網站裡,

找到可以下載的點了,不過,他好像是透過百度雲連結的,這部分你就自行想辦法了。

反正在大陸的網站裡到處都有各式各類的破解程式,一副國際智權化外之地。

但要不要下載回來試試?可以先看以下文章再說吧。

我是有另外使用另一個免費的反組譯工具:D52 8051/8052 Disassembler

以下我們就用這兩套反組譯工具來先初步的比較看看:


上圖最左邊的就是 IDA Pro,中間是原來的 BIN 檔內容;最右邊的則是D52 的內容。

我只是把他的結果用 Excel 開啟,這樣子有比較容易閱讀的格式。


這是我手上紙本的原始檔案內容。最主要就是三個副程式進入點:主程式及

兩個 Timer ISR。看起來,這個 Binary 檔雖然內容不符合紙本內容,但基本上

是一樣的架構。但很明顯的是 IDA Pro 好像有點解錯了。

但我們在來看 TIMER0 的ISR 進入點:


看起來卻是比較合理的,但也不可諱言的是:IDA Pro 比較好閱讀的,而且他也會

用流程圖的方式顯示:(下圖右邊),可閱讀性真的比較好的。


但這一部分:Timer0 ISR 真的有點給他複雜了,我們就先來看簡單一點的 Timer1 ISR。


Timer1 ISR 進入點之後,就直接跳到:0x193D 的位置:就只有 Reload Timer1 Counter。

然後直接 Toggle P3.4 而已。這段程式很短,很容易反組譯比對的。

我們在來看我手上紙本的內容:


Timer1 ISR 進入點之後,就直接跳到 0x1144 的位置:


內容是一樣的。所以啦。雖然這個 Binary 檔內容,跟我手上的不同,但架構上大致

是一樣的。所以只有一些小細節不同吧,往後努力地比照核對上,應該還是有一定

的參考價值的。

----

以上就是一般韌體逆向工程的紙上作業部分,那在硬體上,我們又該如何進行呢?

總不能用紫外線的 EPROM 來 Try Binary 檔吧?會搞死人的啦。


那我就把原來的 EPROM 換成 W27C512 的 EEPROM 版吧:


這樣子當然可以啊,但還是要反覆燒錄 EEPROM 啊。麻煩~

所以這時候;我之前那個 ROM 模擬器就可以派上用場了啊:

(不過,這邊先預告一下:其實連結的那篇ROMTER 的文章,最終我都還沒有

完善最終的整個 Release 版本,改天我再撰寫另文來進一步解說。)


結果呢?果然好用啊!😁😄😃😁😃😄😍😎

---

所以說啦,搞工程技術開發,最難、最麻煩的就是這些周邊工具或應用軟體啊。

要寫寫韌體,開發軟體程式,就只要坐在電腦桌前就可以了,但如何把這些平台

與硬體連結起來,還是考驗著許多工程師們啊。這些其實也不難啦,需要的

就是時間、金錢與經驗的累積。我年紀一大把了,還拿這個噴年輕人有用嗎?

還不如實際做一次給大家參考看看,不要搞得太花俏,或使用太高檔的儀器設備,

玩玩這些真的不需要花太多錢,看別人寫書或出範例,還要買一大堆硬體板子?

弄一些高檔的儀器展現專業,一副我們就比較專業,想學:你們就得從口袋

掏出一大筆錢才可以。我說過了:除非是公司或有投資人願意出錢給你玩,

要不然啊~就看看想想就好,不要太衝動

有很多儀器設備或硬體的東西,都有其使用及賞味時效性的。不是不要買,

而是真的要考慮清楚,不要太衝動,尤其是個人學習成長的~也不要拿那個:

"我這樣子是在投資我自己的未來機會的啦"--- 這是甚麼鬼理由啊。

這也代表你的投資眼光也是有些問題的,如果真的有那麼好的未來商機,

為什麼就不能找人分散風險呢?錢就分給別人賺啊。

就像你上班時,老闆又不拿錢出來買儀器設備,也不給加班費,也不花錢給

你去上課,你還以為這樣子的公司或你自己的未來前途就比較好?

這樣子混了幾年,你還在想你的未來喔?

---

只要逆向工程的平台搞定了,接下來容易多了,我想到的就是要硬體上去解析

韌體中對於周邊電路的地址解碼來看韌體程式了,

如果大家有興趣的不妨一起研究看看吧。我已經以上相關的資料內容

先擺在雲端裡,改天如果弄好 Github 平台時。在讓大家一起分享逆向工程

的成果吧。如果有人知道如何在Github 上面架設專業分享平台的話,

也不妨跟我說一下吧。謝謝!

雲端分享點:點我

*待續*


16 則留言:


  1. 轉貼
    Git 教學和 GitHub 設定指引:
    https://hackmd.io/@sysprog/git-with-github

    回覆刪除
    回覆
    1. [Git][教學] 02. 開始使用 GitHub, 註冊與建立repo:
      https://progressbar.tw/posts/3

      刪除
  2. 謝謝你提供的資訊。
    一般的Commit 或基本操作我也是可以的。
    就還沒玩過專案管理啦。
    至於入門 Github ,當初我也是問我兒子。
    結果他只丟給我一個網站:
    https://learngitbranching.js.org/?locale=zh_TW
    還蠻不錯的。也分享給諸位。

    回覆刪除
    回覆
    1. 1) 第 26 天:多人在同一個遠端儲存庫中進行版控
      https://github.com/doggy8088/Learn-Git-in-30-days/blob/master/zh-tw/26.md

      2) 30 天精通 Git 版本控管
      https://github.com/doggy8088/Learn-Git-in-30-days


      刪除
    2. 多人專案管理:
      網路成員來自四面八方, 約束力弱,
      須注意儲存庫權限管理這件事, 免得有人不小心(故意)將整個儲存庫或多個儲存庫資料刪光光,

      在公司裡, 大家是命運共同體, 通常不會有人這樣幹,
      除非對方想離職, (做了還是有可能會被告),
      另外公司 IT部門也會定期備份資料, 被抹除的資料還有機會救回來

      刪除
    3. 謝謝你的建議。
      資安問題也是我考慮的因素之一。
      畢竟我們都只是單純的宅男工程師。
      或是小間的組織團隊,都沒辦法養得起專業的MIS 人員。
      有些專案管理立意良善,但人心難測啊。

      還是謝謝你的忠告,我會認真考慮的。

      刪除

    4. 這沒什麼啦, 這些資訊在網路都找得到,
      不過就是訊息篩選, 補上個人小小的使用心得而已,
      畢竟當了那麼多年的免費仔, 有時候也要回應一下嘛

      刪除
  3. 作者已經移除這則留言。

    回覆刪除
  4. 作者已經移除這則留言。

    回覆刪除
  5. 作者已經移除這則留言。

    回覆刪除
  6. 大家可以透過我這些文章內容實例可以觀察到:
    網路的東西,你真的很難控制這些留言、網友們的特性。

    其實這位國外網友之前也留言不少。
    我也真的不知道他到底要甚麼?或想表達甚麼?

    所以搞技術的工程師,真的不要以為只要透過網路,
    或社交媒體平台,就想做生意,你真的很難應付
    這些五花八門的內容或需求。
    人家開公司為什要請業務人員?而且業務人員的薪資
    也未必比做研發的工程師低啊。這些業務光可以幫你
    應付過濾市場客戶,還要幫你交貨收款等。
    都不容易啊。

    所以啦,你真的要非常清楚一件事:光在網路社群媒體平台,
    搞幾篇技術文章,寫寫吹噓文,噴一下別人說自己有多厲害。
    那對自己的產品業務沒有多大的助益的啦。
    (頂多也只是拉拉一些沒有穩定長久生意的委託外包案而已!)

    網路行銷就是要終端定價有明確市場規格需求的產品:
    就是一手交錢,一手交貨的東西。
    就算如此,人家還是會碰到詐騙案例,那你說:
    光來來去去的技術討論攻防,能成就甚麼生意啊?

    回覆刪除
  7. after diferencing and testing the dump,
    error 30 is displayed.
    marywu stuck on number 1.
    your and marywu dump look diferent. idk what diferences.
    but the music are similar.

    回覆刪除
  8. 作者已經移除這則留言。

    回覆刪除