在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于CY7C63100A/CY7C63101A微控制器實現USB軟件狗的應用設計

電子設計 ? 來源:電子技術應用 ? 作者:徐增祥 ? 2021-03-22 10:28 ? 次閱讀

1 軟件狗技術

近年來,軟件狗技術在保護軟件開發者利益、防止軟件盜版方面起了很大作用。軟件狗技術屬于硬加密技術,它具有加密強度大、可靠性高等特點,已廣泛應用于計算機軟件保護。軟件狗技術的發展經歷了多次更新換代。第一代軟件狗通過短接并行口的某兩根線,或者再加上一些電阻電容二極管等實現;第二代軟件狗采用邏輯門電路跨接在并行口上,并采取適當的措施盡量避免軟件狗和打印機之間的相互干擾;第三代軟件狗的核心芯片是EEPROM,主機通過并行口直接讀寫EEPROM以實現對加密信息的存取;第四代軟件狗以微控制器和EEPROM為核心器件,又稱微狗,它具有一定的智能,應用靈活性和抗破解能力都得到了很大提高。

傳統的軟件狗通過在并行口上附加一定的電路實現,而并行口本身的特點限制了傳統軟件狗技術的進一步發展。由于并行口本身沒有電源線,所以傳統的并行口軟件狗都是通過各種“偷電”技術從數據線或控制線獲得軟件狗電路所需的電源,其電路必須選用規模不大的低功耗元器件。在負載能力很低的并行口上,并行口軟件狗難以保證正常工作。由于并行口是為連接單個設備設計的,在連接多個設備時很難避免沖突,傳統的并行口軟件狗必須仔細考慮與打印機之間的兼容性問題。特別是對于一些非標準接口的并行口設備,就更難解決沖突問題。這些都使并行口軟件狗技術的發展受到了很大限制。

USB是在1994年底由Compaq、IBM、Microsoft等多家公司聯合提出的一種連接外部設備的新型的通用串行接口技術,它具有真正的即插即用和熱插拔功能,理論上可支持多達127個不同外設的同時連接。USB是一種先進的很有前途的接口標準,隨著USB接口器件的發展,使用USB接口的設備會越來越多。USB接口本身具有電源線,可為外設提供穩定可靠的工作電源,從而對USB軟件狗所用元器件的工作電壓、功耗等的要求大大降低,軟件狗的工作條件得到很大改善,更容易實現復雜、靈活的設計和電路的微型化。由于USB是為連接多個設備而設計的,有著嚴格的規范,從接口本身避免了設備間的沖突,只要遵循USB接口規范,USB軟件狗不但不會對別的USB設備產生影響,也不會受到別的USB設備的影響。與并行口相比,USB接口更適合于軟件狗技術。

2 USB軟件狗的硬件

在本設計中,所使用的微控制器是CY7C63100A/CY7C63101A。它是CYPRESS公司生產的8位精簡指令集(RISC)的OTP型微控制器。它集成有1.5Mbps的USB串行接口引擎(SIE)(即USB收發器),具有128字節的片內RAM、2/4K字節的程序存儲空間,片內還具有一個自由運行的8位定時器、一個看門狗定時器和內部上電復位電路,它的指令集專門為開發USB應用進行了優化。該控制器擁有兩個輸入輸出端口、16根通用I/O線,且每根線均可作為中斷源。端口1的所有引腳都帶有可編程驅動器,可以直接驅動LED發光。該控制器的操作電壓為4.0~5.25V,它需要6MHz的外部陶瓷共振器,片內操作時鐘為12MHz。

CY7C63100A/CY7C63101A是低速USB外設的低成本解決方案,符合USB1.1規范,支持1個設備地址和2個端點(一個控制端點和一個數據端點)。

本設計中所使用的存儲器是24C02,它是帶有硬件寫保護功能的串行EEPROM,其接口兼容I2C總線規范,通過一對串行時鐘、數據線對片內存儲單元進行讀寫。24c02的片內存儲器容量為2K位(或256字節)。

本文設計的USB軟件狗的硬件電路圖如圖1所示。其核心器件是微控制器(可根據需要選用CY7C63100A或CY7C63101A,其區別為程序存儲器的空間不同,分別為2K字節和4K字節)和串行EEPROM(24C02),各元件的具體參數如圖1所示。

基于CY7C63100A/CY7C63101A微控制器實現USB軟件狗的應用設計

微控制器的第15(D-)、16(D+)腳分別連接USB連接器的第2(D-)、3(D+)腳,提供微控制器和主機之間信息交換的電信號通道,其中第15引腳(D-)所接的7.5kΩ的上拉電阻是為了滿足USB規范的要求。微控制器通過USB接口與主機進行信息交換。

微控制器的第20腳(P1.1)經過10KΩ的上拉電阻連接24C02的第7腳(WP,寫保護),控制24C02的寫操作使能。當WP為高電平(Vcc)時,只能讀取24c02的內容而不能對其進行寫入;當WP為低電平(Vss)時,則可以進行讀、寫操作。設置寫保護功能,可以防止存儲器內容被意外改寫。微控制器的第19腳(P1.3)連接24c02的第6腳(SCL,串行時鐘),為控制24C02的讀寫操作提供時鐘;微控制器的第18腳(P1.5)經過10KΩ的上拉電阻接24C02的第5腳(SDA,串行數據、地址),作為讀寫24C02的數據、地址信號線。微控制器通過這三根信號線完成對24C02的讀寫操作,對24C02的讀寫控制滿足I2C總線規范。

3 USB軟件狗的軟件

USB軟件狗的軟件包括主機軟件和微控制器中的軟件(固件)。主機軟件和固件相配合,協同完成主機與USB軟件狗間的信息交換。其中,微控制器中的固件主要完成與USB主機的通信(包括參與USB總線設備枚舉、USB軟件狗的自身標識等)、對24C02的讀寫操作、與主機程序相配合實現和主機程序間的數據交換等任務。微控制器程序的簡化軟件框圖如圖2所示。

3.1 USB設備枚舉

USB軟件狗插入主機后,主機發現USB軟件狗,在執行USB復位操作后,主機使用默認地址(地址0)向USB軟件狗發出設備描述符請求,USB軟件狗向主機返回自己的設備描述符作為響應;接收到要求的設備描述符后,主機為新發現的USB軟件狗指定一個新的USB地址;然后,主機使用新的USB地址重新向USB軟件狗發送一個設備描述符請求,USB軟件狗向主機返回自己的設備描述符作為響應。主機向USB軟件狗發送配置描述符請求,USB軟件狗從程序存儲空間中取出相應的描述符并返回給主機。當主機接收到所有的描述符后,USB設備枚舉過程即告結束。至此,主機已完全了解USB軟件狗的資源要求、端點類型和性能等特性。

3.2 USB軟件狗和主機間的數據交換

由于CY7C63100A/CY7C63101A只提供兩個USB端點:端點0和端點1。端點1只能發送數據而不能接收數據,所以不適合USB軟件狗的交互式數據交換的要求,故只有使用端點0與主機進行數據交換。

USB共支持四種類型的傳輸:等時傳輸、中斷傳輸、控制傳輸和批量傳輸。要求恒定的連續傳輸速率的實時應用程序一般都采用等時傳輸方式。等時傳輸要求及時地提供數據,且對數據的正確性要求不高而對時間極為敏感,所以在等時傳輸中,數據的有效性不能保證。在傳送數據發生錯誤時,USB并不處理這些錯誤,而是繼續傳送新的數據。中斷傳輸方式總是用于對設備的查詢,以確定設備是否有數據需要傳輸。因此中斷傳輸的方向總是從USB設備到主機,傳送的數據量很小。但這些數據需要及時處理,以達到實時效果。控制傳輸提供了一種方法來配置USB設備,并對它操作的某些方面進行控制。每個設備都必須實現一個缺省的控制端點(端點0),控制端點用來配置設備、控制設備狀態以及設備操作的其它方面,包括設備控制指令、設備狀態查詢及確認命令。批量傳輸適用于對數據的正確性要求很高、而對數據傳輸速率沒有特殊要求的設備。

除缺省的針對端點0的控制傳輸外,對于其他三種傳輸方式,端點的傳輸方式一旦確定,則該端點在此配置下只能進行某一特定方向上的數據傳輸,而不可以在通信過程中改變傳輸方向,除非重新選擇配置。對于USB軟件狗應用,由于USB軟件狗與主機間要不斷地相互進行數據交換,且每次所需要交換的數據量不大,故選用控制傳輸方式。

控制傳輸至少由兩個階段組成,也有可能是三個階段。建立階段--控制傳輸總是從建立階段開始,在本階段主機向目標設備傳送信息,定義對USB設備的請求類型(例如讀設備描述符)。數據階段--這個階段僅僅是因要求數據傳輸的請求定義的。例如,在數據階段,讀描述符的請求把描述符的內容發送給主機。狀態階段--這個階段用來報告所請求的操作的結果。控制傳輸從建立階段開始,它包含8字節的信息包。這個8字節的信息包定義了在控制傳輸的數據階段所傳輸的數據數量。在數據階段,信息包的最大數據載荷限制為64字節。對于本設計,由于CY7C63100A/CY7C63101A的端點0只提供了8字節的FIFO緩沖區,故最大信息包只能取8字節。如果有更多的數據需要傳輸,可以分多次完成。控制傳輸參與錯誤檢測和恢復機制,努力提供一種最大限度的恢復,以保證數據的完整性。

USB設備枚舉過程結束后,并沒有立即開始工作,必須由主機根據在枚舉階段所獲得的信息對USB設備進行配置。配置完成后,USB設備才進入工作狀態。此后,主機就可以與USB設備進行數據交換了。

主機與USB軟件狗間的數據交換過程均由主機方發起,每一次數據交換都由完整的控制傳輸完成。在控制傳輸的建立階段,主機向USB軟件狗發送8字節的信息包,通過用戶自定義的請求類型字段規定USB軟件狗對后續數據應進行的處理,或要求USB軟件狗向主機返回特定的信息。在數據階段,USB軟件狗接收指定數據或按要求向主機發送相應數據。控制傳輸的狀態階段指示本次數據傳輸的結果狀態,以確定本次交互是否正確完成。

3.3 讀寫24C02

為防止24C02的內容意外改變(例如,由于強干擾或不規范操作等),在不進行寫操作時,應使WP引腳保持為高電平,即P1.1保持為高電平。在進行寫操作時使WP變低,并一直保持到寫操作完成。寫操作完成后立即恢復WP為高電平。對24C02具體的讀寫操作符合I2C總線規范,很多相關書籍都有具體的實例程序,本文不再贅述。

為安全起見,存儲器24C02中的數據應采用加密后的形式存放。

4 軟件狗反破解技術

針對軟件狗的破解方法主要有兩種:硬件方法和軟件方法。

軟件狗的硬件破解方法,主要是仿制軟件狗的硬件電路。這個方法對付早期的軟件狗比較有效。當微狗出現后,由于很多微控制器本身都提供了程序代碼保護功能,這使得仿制軟件狗特別是獲取固件變得越來越困難,這種方法現在已經很少使用。還有一種硬件破解方法是使用邏輯分析儀或軟件攔截I/O,記錄下軟件狗與主機軟件間所傳送的數據并進行分析以找出規律。這對于一些簡單的軟件狗比較有效,而對于算法眾多、交互數據量很大的軟件狗,這種方法所帶來的繁雜性可想而知。USB通信規程本身相當復雜,這也大大提高了對USB軟件狗進行數據攔截的破解方法的難度。

現在,更加常用的軟件狗破解方法主要集中在軟件方面,并有軟件模擬、跟蹤分析等方法。

軟件模擬,就是先啟動I/O攔截軟件,然后在有軟件狗的情況下啟動受保護軟件,并對受保護軟件的每一個功能都進行試運行;同時,后臺的I/O攔截軟件記錄下受保護軟件與軟件狗之間交互的數據供以后使用。記錄完成后,只需在啟動受保護軟件前先啟動模擬軟件,就可以使受保護軟件在沒有軟件狗的情況下也可以正常運行。在受保護軟件運行過程中,當它企圖與軟件狗進行通信時,后臺的模擬軟件攔截到該通信請求,根據先前記錄下的數據對真實軟件狗進行仿真,使受保護軟件誤認為軟件狗確實存在。對于軟件狗和受保護軟件間通信數據不變的情形,軟件模擬方法十分有效;但如果通信數據中含有隨機性的參數(例如,系統的當前時間),那么軟件狗和受保護軟件間所交互的數據就各不相同,在這種情況下,軟件模擬方法就顯得無能為力了。例如,主機軟件可以取系統當前時間送給軟件狗,軟件狗使用一定的規則對其進行變換,并把結果送回主機軟件,主機軟件用同樣的規則對上述時間值進行同樣的變換,檢查變換后的結果是否一致。這里需要有好的變換算法,使變換結果對參數的各個部分的改變很敏感且程度相似。或者,軟件狗和受保護軟件間遵循一定的通信協議(當然是不公開的),所傳輸的數據中含有大量隨機的無用信息,而根據該通信協議,軟件狗和受保護軟件都可以從中提取出有效的信息。

在各種軟件狗的軟件破解方法中,以跟蹤分析方法的威力最為強大,具體的有靜態分析和動態跟蹤等方法。

靜態分析方法是用一些靜態反匯編、反編譯工具對受保護軟件進行逆向分析,以求找出訪問軟件狗的代碼并進行相應的修改。如果預先對受保護軟件的程序代碼采用一定的變換(可以取軟件狗中的數據作為變換參數),在運行時再進行反變換動態生成將要執行的代碼,就可以有效地對抗靜態分析方法。還可以使用可執行文件壓縮工具對受保護軟件進行壓縮處理,或采用軟件加殼工具對其進行處理等,這些都可以有效地對付靜態分析法。另外,如果把主機軟件的內部函數調用與外殼加密相結合,則可進一步提高加密強度,即使軟件的外殼被破除,也仍然不能正常運行。

動態跟蹤破解法不僅可以用于軟件狗破解,還可以用來獲取一些軟件的注冊序列號,取消軟件的試用期限制、試用次數限制和解鎖試用版軟件等。這種方法是使用一些調試分析工具軟件(如DEBUG,SOFTICE等),控制受保護軟件的整個運行過程,找出它與軟件狗間交互部分的代碼并進行修改,以使其跳過對軟件狗的檢測或使檢測結果無效。該破解方法的使用者往往都具有相當豐富的破解經驗,對各種加解密方法了如指掌,這種方法也需要破解者付出很大的精力。對付這種暴力破解方法,主要就是設置跟蹤陷阱、使用大量各不相同的加密算法并大量分散地設置對軟件狗的訪問、分離對軟件狗的檢測命令和對結果的判斷等,目的就是加大跟蹤分析的工作量、擾亂破解者的思路,大量消耗其體力和腦力,最終達到使其知難而退。動態跟蹤法的一種很有效的對策是限定主機軟件與軟件狗間交互操作執行的時間。如果軟件狗發現某個操作的執行時間超出設定的值(時間閘),則不作響應或送回錯誤的響應以迷惑破解者。這是由于對于同樣的操作,動態跟蹤所需要的執行時間常常要遠大于正常連續運行所需要的時間。在主機軟件中也可以設置時間閘,但與在軟件設中放置時間閘相比它更容易受到攻擊而失效,效果不太好。主機軟件也可以接管操作系統的調試函數或檢測某些調試軟件的存在,一旦發現自身在調試狀態下運行,就立即退出運行或使程序不正常運行以迷惑破解者;也可以通過縮短軟件升級的周期來使解密者疲于應付。靜態分析和動態跟蹤方法常常是相互配合使用的。與此對應,相應的反破解方法也是密切結合的。

軟件狗除用來進行軟件合法性檢驗外,還可以實現很多其它有用的功能。例如,可以在軟件安裝時把硬盤的產品序列號、CPU的產品序列號或者網卡的物理地址等硬件信息寫入軟件狗,以后軟件在每次運行時都進行一致性檢測以判斷本次運行機器和安裝時所用機器是否為同一臺機器,這樣就可以實現軟件對運行機器的限制。也可以利用軟件狗中的定時器和存儲器實現更加安全的軟件試用期和使用次數等功能。

從微狗開始,軟件狗就引入了微控制器技術,這大大提高了軟件狗技術實現的靈活性;USB接口為軟件狗提供了一個理想的工作環境,使軟件狗硬件所受的限制大大降低;現代密碼技術的發展也為軟件狗技術提供了更加廣闊的發展空間。作為USB技術和軟件狗技術相結合的產物,USB軟件狗技術無疑會具有十分強大的生命力。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7560

    瀏覽量

    151496
  • usb
    usb
    +關注

    關注

    60

    文章

    7949

    瀏覽量

    264838
  • 定時器
    +關注

    關注

    23

    文章

    3250

    瀏覽量

    114897
收藏 人收藏

    評論

    相關推薦

    請問如何使用外部PD控制器控制CY7C65210?

    客戶需要一臺比爾巴德設備、 1我們需要對 CY7C65210 進行編程嗎? 2如何使用外部 PD 控制器控制 CY7C65210。
    發表于 07-23 06:34

    請問CY7C65215A能否成為I2C主站到SPI主站的橋接器?

    CY7C65215A 能否成為 I2C 主站到 SPI 主站的橋接器?
    發表于 07-04 07:29

    CY7C65215A作為從站,在主站寫入時響應NAK是怎么回事?

    我在 SCB0 中將CY7C65215A配置為從 I2C 設備。 我使用 CyI2cWrite_VCP 和 CyI2cRead_VCP API 進行寫入和讀取。 根據 I2C 標準,主設備向從
    發表于 07-04 06:30

    cy7c68013a-56ltxc搭載fpga傳輸數據丟包是哪里出了問題?

    1.8m的一個圖像數據由fpga傳輸給usb芯片,再由cy7c68013-56ltxc芯片把數據傳輸給電腦,然后由軟件排列起來,發現數據出現了丟包,數據卻行,大家有什么看法?
    發表于 07-03 08:26

    FX2 CY7C68013A如何在C++環境中使用LoadEEPROM函數?

    我使用的是 FX2 CY7C68013A 芯片。 我知道 CyUSB.NET 庫中有我需要的 LoadEEPROM 函數。 請問如何在 C++ 環境而不是 C#/CLR 環境中使用該函數? C
    發表于 05-31 06:59

    如何在CY7C65215A上使用GPIO0?

    嘗試在 CY7C65215A 上使用 GPIO0
    發表于 05-27 07:04

    請問CY7C68013A-56LFXI的替代型號是什么?

    型號:CY7C68013A-56LFXI 的替代型號是什么?
    發表于 05-24 08:29

    CY7C65213-32LTXIT USB檢測失敗的原因?

    我們使用 CY7C65213-32LTXIT( USB 接口 IC USB-UART LP 橋控制器),但 USB 檢測失敗。 我們使用的是
    發表于 05-17 07:24

    賽普拉斯 Cypress 品牌 CY7C1021DV33-10ZSXIT

    、記憶體、模擬集成電路和 usb 控制器——使我們在物聯網領域擁有無與倫比的競爭優勢,并在新興市場(包括連接的電器和自動駕駛汽車)大有斬獲。 經營產品 據點1:在加州圣約瑟市,是公司的第一個工廠和現在
    發表于 04-20 16:47

    cy7c68013a固件已經配置成異步slave模式,是否有MCU用IO口控制cy7c68013a通過數據總線來實現與PC的USB口通信?

    cy7c68013a的固件已經配置成異步slave模式,是否有MCU用IO口控制cy7c68013a通過數據總線來實現與PC的USB口通信,
    發表于 02-27 08:14

    cy7c65211A多路通信錯誤的原因是什么?

    你好,我想問一下。 首先,我通過軟件USB串行配置實用程序”將這三個芯片cy7c65211A的序列號分別設置為001,002,003。 這三款芯片的 VID 和 PID 是相同的。 然后
    發表于 02-27 06:59

    請問USB串行橋接控制器CY7C6521x的配置可以鎖定嗎?

    是否可以將編程的配置鎖定到英飛凌的每個 CY7C65211/3/4/5/6 USB 串行橋接控制器中,以防止現場配置發生變化? 或者,英飛凌串行橋接控制器進入現場后,是否需要任何特殊方
    發表于 02-23 08:24

    請問CY7C68013A高速模式如何配置?

    請問CY7C68013A高速模式如何配置?手冊里只有提到了中斷和ram
    發表于 02-23 08:09

    無法使用USB串行配置實用程序連接CY7C65214,如何配置此設備?

    我無法使用 USB 串行配置實用程序連接CY7C65214。 如何配置此設備? 我找到的唯一USB串行配置實用程序在啟動屏幕上沒有聲稱支持CY7C65214。
    發表于 02-23 07:58

    CY7C65215A-32LTXI USB配置工作模式失敗怎么解決?

    CY7C65215-32LTXI芯片可以配置,但換了新CY7C65215A-32LTXI,32PIN QFN封裝 ,USB配置工作模式失敗。
    發表于 02-21 06:50
    主站蜘蛛池模板: 日本高清视频在线www色| 免费观看欧美一级片| 永久免费精品视频| 国产在播放一区| 永久精品免费影院在线观看网站| 国产精品成人aaaaa网站| 伊人久久大香线蕉资源| 午夜免费福利片观看| 色婷婷综合和线在线| 最新激情网站| 一本到视频在线| 日韩一级视频| www一片黄| 午夜视频在线观看国产| 天天操人人| 福利一区在线观看| xxxx.欧美| 在线视频你懂得| 特黄特色网站| 美女天天色| 91老色批网站免费看| 日本xxxxbbbb| 天天操欧美| 国产一级特黄在线视频| 日本高清一本视频| 国产精品久久精品福利网站| 午夜视频h| 福利视频一区二区| 色一区二区| 国产女主播在线| 日操夜干| 丁香五月缴情综合网| 在线看片一区| 欧美一区二区三区免费| 成年人www| 国产美女作爱全过程免费视频| 一级a级国产不卡毛片| 性a爱片免费视频性| 毛片网在线| 天天干夜夜夜操| 2345成人高清毛片|