色爱av综合网_色女人在线视频_男男gaygays亚洲_日本高清久久一区二区三区

購物車0種商品
IC郵購網-IC電子元件采購商城
MCU之思想
(2011/10/21 9:55:00)

要復制一塊PCB, 破解者需要知道:
1, PCB圖紙. 這個 可以通過抄板得到. 問題不大. 不論是幾層板, 都有抄的, 基本上無法防. 打磨型號基本無用, 因為可以通過測試的方式試出來.
2, MCU的hex文件, 就是軟件部分. 這個對大部分破解者來說更是小菜一碟, 通過對某些管角加壓的方式來讀出MCU中flash文件, 修改成hex文件.

這是現在的破解情況.


那么要防破解, 就是要給這個PCB一些唯一的東西, 使得破解者無法復制, 或者復制的成本很高, 高于研發成本.

我們首先想到的肯定是唯一序列號芯片. 比如ds18b20之類的, MCU可以通過SPI總線讀出唯一的序列號, 這個序列號與hex文件中唯一的序列號進行比對, 從而確定這塊板子是對應這個hex文件的.
也就是說, 破解者得到了hex文件后, 是不能直接在復制的硬件上使用的.

這是一種常見的防破解方法.

但是這種類似加密狗思想的防破解方法早就被破解者們攻的體無完膚了. (1992年的破解就是這種.)
破解過程是這樣的:
1, 收集三個或者更多母本hex文件. 并記錄唯一序列號. (沒有寫外邊的不記錄)
2, 比對這幾個hex文件的不同之處, 找出序列號在hex文件中位置.
3, 直接清空, 甚至尋找附近的判斷jmp語句, 并改成判斷成功的跳轉.,
4, 找一個空序列號的芯片替代母板芯片.

簡單的講, 這個破解思路類似我們的PC程序破解,就是想辦法找到序列號判斷的語句, 并破壞之. 尋找序列號位置的方法使用了對比多個母板hex文件.

這個破解成本稍微高些, 但是也已經產業化. 基本無效.


下邊寫hex文件的加密.
hex文件就是程序編譯成的機器碼. 拿到了hex文件相當于拿到了匯編文件, 當然, 里邊助記符啥的都沒有, 現階段得靠人猜(有自動反匯編的軟件存在的. 不過那是獨門絕技, 危害較大, 我們當它不存在就是了), 如果是C語言寫的程序, 肯定無法根據hex文件反解到C了---如果這個可行的話, 我們所用的軟件都是可以被還原成C的.

假定一個匯編程序編譯成了hex文件,

那么, 我們知道這個hex文件的內部機器碼次序是基本對應匯編代碼的. 假使程序共有10個函數f0(),f1(),...f9(),順序編程. 那么hex文件中這10個函數的對應二進制段也是10個二進制代碼段.
一個段可以表示為如下圖:


函數的調用實際上是call的這個f0_start 地址, 用寄存器傳遞的參數. 簡單的講就是運行這個函數, 就是pc指針從f0_start開始跑.
這10個函數結構類同.
我們知道, 程序是有函數組成的, 對應的, hex文件是由很多個函數二進制段組成的, 函數的調用是call函數地址來完成的. 那么, 我們可以將函數的地址做一個列表, 函數的調用可以先查這個表, 然后call表里的地址. 相當于有一個函數表存在.

在C語言中, 我們通過
1, 創建2個結構體s0,s1
2. s0中有2個成員,ptr為指向s1的結構指針,fn為函數的個數
3. s1中只有一種數據類型即函數指針,F0,F1,..F9對應指向函數f0(),f1(),...f9(),Fx指向f9()后的空函數fx()
即f0()(),f1(),...f9()的長度為L0=f1()-f0(),L0=f2()-f1(),L3=f3()-f2(),...L9=fx()-f9(),
函數調用方式:
s0->ptr->F0(),s0->ptr->F1,...s0->ptr->F9()

這樣, 結構體S1就是我們的函數首地址表, 而s0->ptr->F0()這種調用方式又決定了先查表再調用這種思路.

下一步就是重點的加密了!
1.ISP下載hex文件的以前, 將hex文件中的f0(),f1(),...f9()代碼段順序打亂,F0,F1,...F9順序不變值變化(就是讓指針對應不了函數),即每次isp下載的Hex文件每次傳送都不一樣
網站記住s0,s0全部成員后填充為空!!!,這樣isp過程即使攔截也無法知道s0,s1
2.IAP
IAP命令參數及調用地址由IAP與串口通訊動態得到,也想就恢復了s0和s1,程序后將IAP入口指針清零.
下邊舉個例子說明.

假定原來hex文件結構如圖:


現在我調換下f0和f1代碼段的位置, 變成:


我們看到, f0的入口地址現在應該為2, 但是因為S1結構體沒有變化, 所以記錄的f0入口地址依然為1, 那么, 可以想象, 這個hex文件是無 法 正 (我*, "法 正" 也是敏感字?)常運行的.

那么, 如果我們在改動函數代碼段的同時, 調整對應的入口地址表呢?
如圖: 這樣, hex文件就又能使用了!



那我們沒事鼓搗這玩意有什么意思呢? 這個東西可以用于hex文件加密.

思路如下:
假定有種產品, 10萬臺, 有pcb文件圖紙和hex文件. 要防破解. 不能增加太大成本, 怎么辦?
用這個思路, 將hex文件變成10萬個不同的無法使用的hex文件, 記錄每個hex文件對應的可以正常使用的S1結構體(就是真正的地址表啦). 燒入10萬個產品賣出.

那這些產品都是無法直接使用的. 因為它們的hex文件都是不正確的, 那么如何在產品出廠后改正這些flash中的數據, 來修正S1結構體呢, 很顯然, 只能用bootload, IAP編程.

產品一旦上電, bootload程序運行, 等待從外圍io(UART, SPI, 以太網)讀入S1結構體的數據, 得到S1結構體數據后, 修改flash中S1結構體, (這地方估計寫的不對.......)

(先空著不寫)

也即是說, 每一個hex文件需要一個S1結構體信息----相當于密鑰文件才能運行.

我們只要保證S1結構體不被別人獲取就是了, MCU內部的hex文件本身就是不能運行的.

那么如何方便的, 不需要耗費太高成本的提供S1呢?
答案在于網絡!
























(未完待續, 慢慢寫)

網友評論:給酷

網友評論:聽大師們講課.

網友評論:真羨慕你們,我還在為有人來破解我的產品而不懈努力

網友評論:呵呵,這是與老hot談過的內容,sinanjj還要加強理解,sinanjj字面上所指涵蓋的范圍很寬泛,老hot所言則主要針對可遠程ISP的嵌入式系統,這種系統是有前提的,首先系統資源要足夠,其次本身要帶遠程通訊接口,至少也得通過本地人為干預臨時引入其它平臺上的遠程接口,這種思想對工控系統很有意義,工控系統滿足了資源條件,本身也足夠復雜,更有知識產權保護的需要。老hot的這種思路可以引入到任何具備類似條件的嵌入式系統上,越復雜的越有價值,簡單系統則要走不同的思路,方程式賽道是給F1賽車準備的,開輛QQ還是別上去的好,更不要說騎自行車了。

網友評論:在程序里留后門吧,不公開的協議。每季度或半年訪問一次,看是否是合法產品。
留版權信息,密文。
讓確解的代價大于開發的代價就可以了。

網友評論:程序里留后門,能反匯編的話輕松解決,協議不公開架不住端口捕獲……
對于廉價產品,芯片的選擇很重要,資源足夠可再采取防反匯編技術,次之加版權信息,而對于價格較高的復雜嵌入式系統一般的手段就不夠了,而有些系統甚至要求必須開放協議、開放加密算法,老hot的思路是針對這類系統解決問題的方向之一。
對付破解,一是增加其成本,二是拖延其周期,三是留取其盜版證據。

網友評論:支持26 樓

利潤高的,破解也拿不到什么訂單
利潤低的,多半沒什么技術含量,直接重寫算了

網友評論:
給大家推薦一個軟件,ida pro,所有語言都能反編譯.包括arm
icecut 發表于 2010-7-20 09:43
首先要明確PC端和嵌入式編程平臺的最大差異:
前者程序從硬盤取出,在ram中運行。程序的二進制碼可以隨意讀取。
后著程序大部分可以直接在rom中運行。程序的二進制碼可能受限制讀取。

前者理論上全部可以破解,后者破解途徑較多和復雜,有些幾乎不能破解和反匯編或難度很大。

網友評論:為何要破解,而不去找人開發.
這里就有很多問題,找到行業內高手幾乎不可能,外行進來開發,幾乎就行業白丁,新開發產品,周期長,費用高,而且可能BUG一大堆.
另外,高手也不會輕易去為別人仿制產品,大多是水平一般的.

這也是為什么寧可破解,也不會找人去重新開發了.
被仿制產品都是成熟的產品,就是被市場認可的,這才是問題關鍵.
不少產品,從新開發,到成熟都有幾年時間,不斷改進的.

網友評論:

對于“版權信息”的看法:
所謂暗碼及版權信息,若從未激活且想以此作為“呈堂證供”---簡直是癡心妄想~~~
因為超級反匯編的理論基礎是代碼和數據的分離技術,即程序運行過的區域為代碼區,
未運行過的為數據區。
此數據區又有真偽數據之分,即尋址過的數據區為真數據區,否則為偽數據區。
偽數據區實際有3種情況:
1.從未訪問的用戶自定義函數,即編寫的函數從未調用過。在優秀的編譯器將被優化點而不存在。
2.從未訪問的初始化過的全局或靜態變量,即聲明的變量從未訪問過。在優秀的編譯器將被優化點而不存在。
3.所謂被某些怪異的方法或絕對定位的一些版權信息或暗碼。此類數據即可被超級反匯編輕易找出并消滅之。

所謂“激活”即此版權信息參與了某種運算,那么它屬于程序不可分割的一部分。
而未激活的暗碼或版權信息,由于它不屬于程序的一部分。則可被破譯者隨意“優化”而被滅之。此暴行絕不會影響程序的運行。

所以,未激活可被滅之,激活則必被解密。


矛與盾之爭,盾有幾分生機???

網友評論:版權信息應當被程序訪問,不論明的還是暗的,所謂手腳也只能在訪問的基礎上作為,當然此法存在被解密或繞開的風險,只適用于廉價小系統。很多小產品都是直接解密后1:1照抄,就是有鮮明的版權信息盜版者也不在意,有心想改的還算要求高的,有些手段對付的就是這類盜版者。

35樓的看法是不正確的,你是不知道業界的現狀……

網友評論:宏晶的MCU不是說無法解密的嗎?

數據手冊中這樣寫道:
每片單片機具有全球唯一身份證號碼(ID號)
無法解密,加密堅不可摧

網友評論:ATMEL新推出的基于SHA-256 公開哈希算法的加密芯片,采用SOT-23-3的封裝,使用單線通信,只需要一個GPIO資源,有極高的安全性。產品特點:

1、內置多組256位掩膜安全密鑰,密鑰外部不可讀。

2、64位安全OTP熔絲,安全熔絲狀態外部不可讀。

3、48位唯一序列號

4、高強度SHA-256算法。

5、不需要簽訂NDA,使用簡單,ATMEL完全源代碼支持。

6、適用于從機端。

網友評論:呵呵,LS的廣告是白打了,前面就已經說過了,這種加密方法也容易繞開的。

網友評論:一般產品在代碼內部保留有特殊版權信息和各種暗碼,必須通過一些特殊操作才能調出來,然后選擇解密成本相對高一點的芯片,

多數商業產品如此即可,現在社會一款產品很難保證3年不做升級,不管是自我功能完善、提高性能、降低成本或者是用戶要求增加,解密者跟跑也是很累的。

網友評論:這個必須要關注

網友評論:
給大家推薦一個軟件,ida pro,所有語言都能反編譯.包括arm
icecut 發表于 2010-7-20 09:43
這個沒那么神,,,

網友評論:好,各莊的地道都有很多高招,回頭兒咱也破一個。。。。。。。

網友評論:
真羨慕你們,我還在為有人來破解我的產品而不懈努力
5880527 發表于 2010-7-20 12:13
一個軟件被破解是社會對其軟解設計者能力和智慧的褒獎,是他此生的榮耀與自豪。
反之,是他此生的嘆氣與悲哀。
破解而未果,是他此生的霸氣與狼嚎...

網友評論:46#
呵呵,褒獎、榮耀、自豪這些詞有點不妥帖哈,最多就自己偷著樂一會不得了了

網友評論:哈哈~~~俺說的社會是“黑社會”,它對您成功軟件的關注、認可及價值要遠比“白社會”更高、更強。

網友評論:我,我,我的水平還沒達到,就不摻和到這個帖子里來了

網友評論:記號,慢慢看

網友評論:有道理

網友評論:頂好貼

網友評論:再想一些辦法

網友評論:有道理,關注

網友評論:好東西

網友評論:記號--關于嵌入式軟件加密

網友評論:S1結構體信息, 難度不會給人攔截,復制,夠傻的。

網友評論:簡單芯片的反匯編沒有那么復雜,即使一堆函數指針互相躲貓貓,或者估計指令字節錯位
掛到虛擬機去去跑,甚至能透過虛擬bridge來連接驗證服務器,然后分離數據和程序,記錄程序執路徑樹
然后反匯編全出來了,然后把驗證函數改成直接Return TRUE,哈哈哈
以前我*這個接過幾個單,現在金盆洗手了

復雜的是大容量單片機的反匯編,比如1M字節的純代碼,讓你沒有這么多的經歷去分析
比如4K用一天的時間可以搞定,40K代碼的復雜度絕對超過4K的10倍

簡單的MCU防破解,還是要選好芯片,提高破解成本,另外彩蛋藏版權信息
比如PIC和臺系EMC的一些大銷量的型號,破解成本非常低,100-300¥就可以搞定
我曾寫過一個商業化破解的帖子,說明為什么某些IC破解成本如此之低

網友評論:
簡單芯片的反匯編沒有那么復雜,即使一堆函數指針互相躲貓貓,或者估計指令字節錯位
掛到虛擬機去去跑,甚至能透過虛擬bridge來連接驗證服務器,然后分離數據和程序,記錄程序執路徑樹
然后反匯編全出來了,然后把驗 ...
McuPlayer 發表于 2010-7-24 10:42
帖子在哪里?發上來看看 !

網友評論:
S1結構體信息, 難度不會給人攔截,復制,夠傻的。
g_turing 發表于 2010-7-24 07:12
讓破解者攔截也沒用, 不是寫了未完待續嗎?


慢慢看嗎.



S1只是加密hex文件本身的, 下邊還有復雜的.



而且, coretx-M0系列可以自鎖死isp, 內有唯一id......

網友評論:圖紙出來了,俺要將其付諸實際,有點:



網友評論:強大的樓主。。

網友評論:本主題的中心思想是讓解密者即使是100%的攔截也拿不到hex文件的全文。而且修復函數入口指針的工作在iap加密流中,攔截的hex文件無任何有價值信息,而且是每次傳播的內容都不同。更何況每個芯片還有一個uid.
總之,本思路是開創性的,方法也是現有條件可以滿足的。

網友評論:呵呵,今天才看到.有些用處.但是也犯了網上公開加密算法都有的錯誤(僅僅是個人看法)......

網友評論:
呵呵,今天才看到.有些用處.但是也犯了網上公開加密算法都有的錯誤(僅僅是個人看法)......
不起眼 發表于 2010-8-1 13:01
請與賜教~~~

網友評論:你的朋友太多了,不敢說.千萬別生氣.

網友評論:直接完整復制呢?無所謂獲得hex文件,反正只要拷貝出一個能完整運行的設備里的映像文件就行。
去法院告?這是唯一的路徑,但很多時候你會發現你比被告死的更慘。

網友評論:
你的朋友太多了,不敢說.千萬別生氣.
不起眼 發表于 2010-8-1 14:47
哈哈~~~站內短信

或:

QQ:1270688699 俺每日20小時在線,注意添加好友信息,否則不加之

網友評論:敢于公開算法的加密算法才是nb算法。哪些不敢公開的,一般是因為漏洞較多。

網友評論:
直接完整復制呢?無所謂獲得hex文件,反正只要拷貝出一個能完整運行的設備里的映像文件就行。
去法院告?這是唯一的路徑,但很多時候你會發現你比被告死的更慘。 ...
aceice 發表于 2010-8-1 16:49
PC端軟件和單片機運行環境造就了它們最大的區別。

前者可以很輕松的拿到完整的EXE文件,后者就有可能讓你得不到完整的HEX文件。

但若都采用這種認證機密機制,將會都得不到完整的執行代碼。

即使得到也是本機的運行代碼。

菜農的天下無賊論實際就是同時針對這兩不同領域的。

但菜農更注重于后者的研究,因為前者。。。

網友評論:mark
加密芯片、防芯片破解、防反匯編,一個都不能少

網友評論:mark

網友評論:學習

網友評論:華而不實,我的芯片一般加密成只讀.呵呵.

網友評論:加密無止境!

網友評論:剛一位老板拿著一塊板找俺克隆,一看MCU是三星的;“這個MCU 買不到,即使有也沒有仿真器等開發工具。唯一的辦法,我給你換51MCU,重新寫程序。”

成交,一個月完成,2萬勞務費。

所以我說,程序加密沒有任何意義。只要知道板子功能,看得見外圍芯片是什么,自己找個MCU自己寫控制程序了。

你若沒有自己寫程序的能力,源代碼破解了也沒用。(還有硬件)你看不懂呀。
你若有自己編寫程序的能力,你根本不需要仿效別人的源代碼,你自己寫的比他好,干嘛要克隆他?


、、

網友評論:這種加密方式主要是用來防止傳輸過程泄密
其實,你傳輸完以后,只要能得到芯片正常運行的Hex文件,前面的功夫都白費了

網友評論:V5 強大的山寨

網友評論:離加密專家距離非常遠。。。
贊揚一下勇于發言的精神
哈哈

網友評論:好好聽課 雖然世一頭霧水 高手哇

網友評論:原來是老帖了。。。
加密解密在于思路...
知道了加密方式,自然迎刃而解。
普通MCU可以直接通過讀FLASH取得機器碼,這使很多加密算法都做無用功。因此加密要放到硬件上。
從硬件上實現無法讀取的加密,再從軟件上實現算法加密,這才是加密的方向。

網友評論:再強的加密都難抵有心破解的人。重要是你做產品的思想。產品的質量,創意,服務,市場銷售網絡,品牌效應永遠無法復制!

網友評論:mark

網友評論:謝謝諸位,先存了,慢慢悟道,呵呵

網友評論:頂一下

網友評論:加密是把雙刃劍啊!
在主程序里加裝防破解外殼得處處小心翼翼,稍不留神很容易把本身沒有問題的主程序里
帶來新的隱患,而且當時測試可能還不能立即發現
到用戶那里特定時候就會暴露出來,看用戶怎么收拾你!
所以加密也得處處小心!
我曾經一個產品,用于加密的時間比搞主程序時間還久
程序里加密的代碼比主程序代碼還多

瀏覽:(688)| 評論( 0 )
博文評論

  • 昵 稱:
  • 內 容:10~250個字符
  • 驗證碼: 驗證碼看不清楚?請點擊刷新驗證碼
  •                      
  • 博文分類

    熱點博文

    最新博文

    最新評論

    IC電子元件查詢
    IC郵購網電子元件品質保障

    主站蜘蛛池模板: 克山县| 新营市| 襄垣县| 曲周县| 嘉鱼县| 北安市| 昌吉市| 洛阳市| 湟源县| 景宁| 新巴尔虎左旗| 柘城县| 永胜县| 宁南县| 女性| 凤凰县| 辽阳县| 清新县| 屏东市| 越西县| 四川省| 滦南县| 昌吉市| 崇左市| 当雄县| 漳平市| 常宁市| 河曲县| 乌兰浩特市| 清流县| 巢湖市| 两当县| 安宁市| 旬阳县| 弥渡县| 合川市| 西乌珠穆沁旗| 钟祥市| 文山县| 股票| 平顺县|