模擬美萍加密狗--Rockey2虛擬狗(四)

    首先,抱怨一下。學校個破網,似乎把我端口封了,死活分不上IP,也許是是我MAC改的太頻繁了,有盜號嫌疑……

    然後,正文開始……

   其實虛擬狗幾天前就寫完了,可這幾天上不了網,所以沒寫博客……(你有完沒完!!!)

   然後,正文開始……

   第二步開始搞定RY2_Open函數……完了。真的完了,RY2_Open一句代碼都不用謝,Rockey2的庫在第一步枚舉Rockey2加密鎖的時候就把每把鎖的HID,UID,硬件版本(就是RY2_GetVersion獲得的版本,所以RY2_GetVersion也不用寫了)讀到內存了,所以直接調用RY2_Open就可以正確返回狗的句柄了,不過這也有一點不好,無法通過虛擬狗截取程序要求的UID和HID,因爲這部分的比較都在RY2_Open裏完成了。

  接着就是關鍵的讀寫部分了RY2_Read和RY2_Write,通過OD跟蹤發現Rockey2的通訊都是通過HidD_SetFeature和HidD_GetFeature這兩個API完成的,封裝成了個函數,流程就是HidD_SetFeature發送命令和數據HidD_GetFeature接收返回數據分析了一下協議,很簡單:

HidD_SetFeature
FUN: RY2_Read		RY2_Write		RY2_GenUID		RY2_Transform
CMD: 81			82			87			8B
ARG: block_index	block_index		FF			00
PAG: 0-8		0-8			FF			[LEN]1
ARG: [uid]4		[uid]4			00 00 00 00		[uid]4
DAT: buffer512		buffer512		seed64			data32
重寫了Get_Report的HID_REPORT_TYPE_FEATURE分支返回數據,增加了Set_Report函數處理命令。這樣RY2_Read和RY2_Write也就完成了


至此,虛擬狗已經基本完成了,只剩RY2_GenUID和RY2_Transform兩個與算法相關的API了,由於沒有實物狗,是在無能爲力。RY2_GenUID用的應該不多,至少實際產品中應該不會用到,如果被調用的話我只寫了個彈出Seed的消息框,並不會生成UID,應該不會用到,如果被調用的話我只寫了個彈出Seed的消息框,並不會生成UID,不過有兩個例外,根據官方文檔和OD了一個寫狗程序,找到兩個Seed-UID對

seed:12345 uid:2AA426F3
seed:chinacoho and chi uid:2BF2DB93

RY2_Transform就直接返回一串0了。

狗內的數據部分我做成了一個外部的dat文件,包括HID、UID、block內數據,這樣就方便交流了。


有問題的朋友請留言,可以深入交流。

另:希望使用Rockey2的廠商一定要使用RY2_Transform函數,這樣才能更有效的保護自己的產品


代碼開源!感謝某位大神的幫助!地址:http://download.csdn.net/detail/douniwan5788/4114939

(發博客時發生了點小意外,Service Unavailable,登不上博客了,掛着代理纔上來,Google了一下還是個常見問題……)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章