美劇《奔騰年代》中逆向IBM電腦的BIOS的具體原理是什麼?(計算機硬體達人請看截圖)

有沒有學計算機硬體的同學解釋一下,倆男主在車庫裡逆向IBM的BIOS的具體原理是什麼?

這方面知識為零,忘大牛解釋下~~~~謝謝!!

問題匯總,具體問題所問段落可以在下面相關圖片上方找到:

Q1:這個BIOS在當時有什麼獨特之處,為什麼它使IBM電腦強於其他公司?

Q2:通過示波器測量引腳電壓如何找出BIOS晶元的?

Q3:這個記錄地址數據背後的原理是什麼?

Q4:為什麼在他的計算機上顯示出了代碼?

Q5:得到彙編語言代碼了,怎麼克隆出晶元(程序)?

Q1:這個BIOS在當時有什麼獨特之處,為什麼是IBM電腦強於其他公司的地方?

Q2: 通過示波器測量引腳電壓為什麼能找出BIOS晶元?(判斷依據?)

Q3:這個記錄地址數據背後的原理是什麼?

Q4:為什麼在他的計算機上出現了代碼?

Q5: 得到彙編語言代碼了,怎麼克隆出晶元(程序)?


Q1:這個BIOS在當時有什麼獨特之處,為什麼它使IBM電腦強於其他公司?

它的獨特之處在於IBM是行業領導者,其他人造東西要兼容IBM。有點類似現在蘋果,大家造手機要像蘋果。複製BIOS是為了使得自己的PC產品在各方面兼容IBM,特別是軟體,也就是DOS。為了實現這一點,必須知道BIOS提供的API(中斷)都做了些什麼,才能複製出一樣的功能。

有人說IBM的BIOS 源代碼是開放的(待補鏈接),所以不需要反向工程。&這其實不太對,類似Win32的API有很多並未公開的細節一樣,雖然IBM BIOS源代碼有手冊,但是由於很多細節並未開放,所以需要Dump實際晶元的內容拿來和源代碼對照才能開發出能用的BIOS。&上面一段說的不對,是因為IBM開放了源代碼所以不能直接複製不然就是侵犯知識產權,所以很多廠商採取了dump晶元的方法來複制。但其實這麼做也是非法的。合法的做法先檢測BIOS開放了什麼API,然後自己寫代碼來複制它的功能。Compaq就是這麼做的(似乎)。

Q2:通過示波器測量引腳電壓如何找出BIOS晶元的?

這個…有點扯。不過簡單說,通過引腳電壓可以看出晶元在什麼時候運行,通過這個可以推斷出哪塊是BIOS哪塊是ROM什麼的。

Q3:這個記錄地址數據背後的原理是什麼?

當年的晶元是單並行,大致上說每個輸入輸出的位對應一個腳,只要知道每個腳上的電壓就知道當前傳輸的數據是什麼內容。在影片里表現成了用一個燈板反映當前數據,實際上根本不需要這麼個玩意。可能調試的時候有點用吧。

Q4:為什麼在他的計算機上顯示出了代碼?

那不是什麼彙編語言代碼不要聽他瞎吹。就是機器碼,而且不一定是執行代碼。那些數字就是單純的BIOS晶元的內容。

Q5:得到彙編語言代碼了,怎麼克隆出晶元(程序)?

最簡單方法:直接存進另一塊一樣功能的晶元即可。

當然實際上要經過反編譯,然後修改一些細節,再放進自己的電腦的BIOS裡面。

順便一說,這部挺扯的。


看到這個提問時,我第一是驚呆了, what? 計算機傳奇故事 也有美劇了嗎?真是我喜歡的style,可以看到我們的先烈,先驅們的事迹啊

第二,這個不正是我尋遍天涯,踏破鐵鞋無處找的最正點的要回答的那種問題嗎?

還等什麼,馬上開始帶你進行那個久遠年代。因為還沒看這部美劇,不過視頻我現在已經從百度網盤中下好了,託管BT。答完問題就去觀賞。

====================

Q1:這個BIOS在當時有什麼獨特之處,為什麼它使IBM電腦強於其他公司?

其實BIOS的獨特之處就是它可以跨平台,my god,是跨硬體,BIOS把操作系統的其他模塊與硬體配置分隔開,所以它的可移植性好, 具有較好的可適應性和易用性。

BIOS晶元保存著系統的「特性」,即
PC 機的基因代碼。通過設計一種能完成 IBM 電路賦予的功能卻又不使用 IBM 的代碼的晶元,就不會侵犯 IBM 公司的版權。1982 年,IBM 和美國司法部在反壟斷官司中達成和解。和解的一個條件是,IBM 得允許競爭對手的發展。

當時IBM PC在市場上的出現,打破了原有的格局,IBM要生產個人電腦時,並不是一帆風順的,前面已經失敗多回了,1980年那支經過多次失敗的team終於聯合Microsoft拿出了一套像樣的個人計算機,而且得到了市場的認可,大眾的好評。也因此財源廣進,後續訂單堆積如山。這個時候,電影里的那幾個人就氛外眼紅了,我現在還不清楚它們是不是Compaq的創始人,等看過美劇才知道。因為IBM PC中的部件很少是由其自身生產的,只有BIOS中的代碼是屬於它的。所以這幾個人認識到只要我們成功複製裡面的功能,就可以生產同樣的兼容機。所以不是說IBM PC強於當時其它電腦,而是只有它能賣上好價錢。

它們管這個行為叫逆向工程,它實際是把 IBM 的BIOS 看作是一個輸入一些指令然後又輸出另外一些指令的「黑箱」。他們認為只要他們不抄襲「黑箱」內部的指令,而只複製出「黑箱」的外部功能,成功地避開了 IBM 公司的侵權控告,反過來又鼓舞了波士頓的一批黑客也開始克隆 BIOS,所以大家看到了電視劇中的這一幕。

Q2:通過示波器測量引腳電壓如何找出BIOS晶元的?

BIOS晶元裡面存儲著關於電腦中的硬體信息,而且系統啟動自檢時要執行BIOS的代碼,所以這時只有BIOS晶元的引腳處電壓是千變萬化的,所以挺容易定位的,而且一般晶元上都帶有型號信息,很容易通過示波器找到哪塊是真正的BIOS晶元。

Q3:這個記錄地址數據背後的原理是什麼?

通過調整示波器的頻率,並且將信號從二進位轉成16進位,並且通過跳線讓LED燈發光,從而記錄下傳遞的數據信息。由於上古時代電腦還是Intel 8088晶元,速度有限,所以能讓它們慢慢看到數據是如何傳遞的,電視劇里也是這麼演的嗎?

Q4:為什麼在他的計算機上顯示出了代碼?

這完全是電視劇情需要吧,顯示的其實就是它記下來的地址數據而己。

Q5:得到彙編語言代碼了,怎麼克隆出晶元(程序)?

買一批同樣的晶元,重新將代碼燒進去就行,CIH病毒沒玩過嗎?


我覺得要是他們在深圳,可以直接去華強北老X那,破解,抄板,生產一條龍服務,量大免破解,抄板費~

==========以上為抖機靈,下面是簡答=================

1. 應該是兼容性考慮,就像國產PLC廣告都會寫兼容西門子。

2. 抄板老手不用測電壓,直接看pcb,就算絲印打磨掉都可以推斷出來。不過如果晶元做了重封裝處理(把連接引腳的金線換個順序什麼的)的話就麻煩點。

3. 可能是他們創業伊始,資金緊張,買不起邏輯分析儀吧…

4. 應該只是dump出來的bin內容

5. 一般拿到bin(機器碼)就可以直接燒了。反彙編成彙編語言可能還要加錢,再改個logo,公司信息什麼的肯定要加錢。

==========吹牛B分割線==========

附自己的破解例子一枚:

在出來干之前待的一家公司曾應boss要求破解了友司(硬體odm公司,腹黑的boss...)的一款嵌入式設備,linux系統,拆開焊出串口有密碼無法登錄,於是吹下emmc,飛線到讀寫器,dump出整塊bin,binwalk出主系統文件系統,去掉了登錄密碼,重新打包bin,燒錄進去,斷開飛線重新吹回去,上電啟動,串口成功登錄,然後就可以root許可權隨便改了~

然而並沒有什麼卵用,n個有關進程逐個逆向過去太費事也不一定成功(因為有app和後台的通信安全機制),最後還是花了一個星期重做了設備+app+後台介面 來演示…


這不是直接對晶元debug嘛


標記一下,9年BIOS經驗,曾就職於 phoenix.

Q1:不知道為啥要破解,劇中沒有說?

Q2:BIOS晶元這個說法不對,BIOS是個input output 程序,存在一個 non violate晶元裡面。劇中說的BIOSY應該是這個存儲器,一般來說很好認,除非這個板子裡面有很多同樣型號的存儲器。開機CPU第一個指令就是從BIOS存儲器裡面讀出來的,如果這個時候用示波器看哪個晶元第一個有信號出來就找到BIOS了。

Q3 :沒看劇,不知道這個地址數據有什麼用。至於說找地址的話,看機器碼就行了。memory 訪問 的彙編是 MOV XXXX XXXX, MOV 對應機器碼比如說是 0xE9(其實不是,舉例而已,0xE9應該是JMP),所以你找到 0xE9,後面的就是地址。當然你要區分數據和命令。

Q4 :那個看起來不是代碼,估計是BIOS的二進位數據。

Q5: 找個同樣型號或者類似的存儲器,用硬體燒錄工具燒進去就可以了。


Q1: 當時IBM是標準,賣的最好的個人電腦。DOS是基於bios的操作系統,bios是firmware,是操作系統控制設備硬體的hub,破解bios後可以控制所有在匯流排上的硬體設備。

Q2:這個不太懂,因為bios晶元就是個存貯器,cpu啟動的時候從這裡讀出代碼來運行。示波器怎麼搞呢?

Q3:這個不是地址,就是一堆機器碼。就是彙編機器嗎,包括地址和指令。根據8086的指令手冊可以分析並進行反彙編。紀錄原理就是在bios晶元上的每個數據管腳上加個感測器,cpu讀bios代碼的時候,把每個電平讀出來控制亮燈。或者自己做個rom讀取器,一個位元組一個位元組讀。你就把bios rom當個u盤就好了。

Q4:讀出來就能存了嘛,存下來就可以顯示了嘛。

Q5:讀出來的代碼,存下來,買個型號一樣的新的晶元寫進去。copy/paste,Done。

也可以用反彙編的程序把讀出來的代碼反彙編一下,修修改改,然後再寫入晶元就是了。但是改rom要看空間,就怕你改半天最後的代碼太大寫不進去就麻煩了。當時的rom都很小的,應該是幾十K這個量級。改完了還要算一下校驗和,過去的rom最後幾個位元組都是校驗和什麼的,不改cpu load不進去的。

總的來說,這個講述比較2,最簡單的辦法就是根據晶元型號,買個rom讀寫器,一個一個讀出來。然後看那個像,對bios熟手一看就知道那個是,那個不是。對了,貌似當年很多生產商為了保密,會不在晶元上印刷型號。那麼用示波器找rom就合理了,先看看那個是rom晶元,然後再用讀寫器讀出來一個一個判別。我猜是這個意思。

-----吹nb的分割線----

20多年前破解、改、克隆過很多漢卡、加密卡、防病毒卡,也小玩過幾次bios。都是暴力讀出反彙編的辦法。


蛋都扯掉了


見過內地某公司的物理加密。在晶元腳內陰影面加焊短路線,強行關閉IO介面。不用放大鏡看不出來。上了同樣顏色。


一般PC的BIOS是存在一片8MB~16MB的NOR Flash晶元裡面,因為存儲晶元大都是cmos工藝,所以俗稱cmos晶元,這種晶元跟樓上BIOS大神說的一樣,一塊主板上應該沒有幾片(據我了解PC主板上只有一片到兩片,兩片的是做備份用的,高端主板為了穩定性採用了冗餘bios備份),IBM的BIOS可能複雜點,估計一片存不下也有可能,而且不排除有其他模塊也需要存儲一些數據,要找的話很方便,直接讀晶元表面的的型號編碼,百度一下各種datasheet就都有了,什麼管腳定義,讀寫時序輕鬆加愉快,比較主流的品牌就是我們寶島台灣的winbond,一般看到這個logo就沒跑了。找到NOR Flash晶元後就好辦了,用熱風槍吹下來或者把引腳接出來,然後用我們牛逼哄哄的深圳產的各種Rom晶元的讀寫工具就可以讀出裡面的存儲內容了,都出來的一般是一個二進位文件,要根據具體的硬體平台的指令集進行反彙編,得到彙編代碼,然後再做下一步分析。如果只是想複製,很簡單啊,去淘寶買空白的同型號晶元,然後用燒寫器把讀出來的二進位文件寫進去,一片克隆的晶元就做好了。


推薦閱讀:

模擬鼠腦的 48 塊 TrueNorth 晶元陣列所運行的演算法是什麼?
海康研究院SP VS 華為SP VS IBM offer,該如何選擇?
IBM(中國)是一家怎樣的公司?
IBM 公司的核心競爭力是什麼?
巴菲特為什麼要選擇購買 IBM 的股票?

TAG:美劇 | 計算機 | IBM | BIOS | 彙編語言 |