首页
社区
课程
招聘
[旧帖] [原创]不完全爆破Rockey2加密狗 0.00雪花
发表于: 2009-4-25 05:04 7377

[旧帖] [原创]不完全爆破Rockey2加密狗 0.00雪花

2009-4-25 05:04
7377
【文章标题】: 不完全爆破Rockey2加密狗
【文章作者】: 丑男无敌
【软件名称】: 某管理系统
【软件大小】: 300K
【下载地址】: 附件下载
【加壳方式】: 无
【保护方式】: Rockey2 Dongle
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: OllyICE
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  
  
  一个小软件,目录下有Rockey2.dll,估计是Rockey2的狗吧,手上无狗,只好爆破了,看起来这个狗也不凶(~ o ~)~zZ
  
  OllyICE载入程序,查字串,很多有用信息:
  
  0047A825   mov     eax, 0047A8B8                     version
  0047A854   mov     eax, 0047A8C8                     date
  0047A934   mov     eax, 0047ABA4                     url
  0047A966   mov     eax, 0047ABB0                     url0
  0047A9B3   mov     edx, 0047ABA4                     url
  0047AA1C   mov     eax, 0047ABC0                     message
  0047AA41   mov     eax, 0047ABD0                     method
  0047AD0C   push    0047AE0C                          .utmp
  0047AD99   push    0047AE1C                          +
  0047AED3   mov     ecx, 0047AFC4                     auupg
  0047AED8   mov     edx, 0047AFC4                     auupg
  0047AF33   push    0047AFD4
  0047AF4A   push    0047AFD4
  0047B0D8   mov     ecx, 0047B10C                     upgrader3.exe
  0047B11E   push    0047B12C                          sendkeys
  0047B465   mov     eax, 0047B478                     invalid key name
  0047B675   mov     eax, 0047B7F8                     no close
  0047B7B2   mov     eax, 0047B808                     invalid keyname
  0047BB34   mov     edx, 0047BB4C                     请插入usb加密设备以验证用户身份
  0047C243   mov     edx, 0047C298                     0123456789abcdef
  0047C7B7   mov     edx, 0047CADC                     _validatekey
  0047C848   mov     edx, 0047CB04                     userid
  0047C8E5   mov     edx, 0047CB30                     _validatedata
  0047C948   push    0047CB48                          ,
  0047CD3E   mov     edx, 0047CD5C                     请确认是否退出本系统?
  0047CDCA   mov     edx, 0047CDE0                     下载已完成
  0047CE35   mov     ecx, 0047CFA0                     webbrowser.inf
  0047CE5C   mov     ecx, 0047CFB8                     urlprefix
  0047CE61   mov     edx, 0047CFCC                     main
  0047CE7F   mov     ecx, 0047CFDC                     url
  0047CE84   mov     edx, 0047CFE8                     updateinfourl
  0047CE8F   push    0047D000                          false
  0047CE98   mov     ecx, 0047D010                     popupmenuenable
  0047CE9D   mov     edx, 0047CFCC                     main
  0047CEAB   mov     edx, 0047D028                     true
  0047CEED   push    0047D038                          /
  0047CEF2   push    0047D044                          index.asp
  0047D1F2   mov     eax, 0047D23C                     ~
  0047D248   push    0047D26C                          确认
  0047D27C   push    0047D29C                          错误
  0047D2F5   push    0047D568                          rockey2.dll
  0047D306   mov     edx, 0047D57C                     缺少rockey2.dll文件
  0047D31E   push    0047D590                          ry2_find
  0047D333   push    0047D59C                          ry2_open
  0047D348   push    0047D5A8                          ry2_close
  0047D35D   push    0047D5B4                          ry2_genuid
  0047D372   push    0047D5C0                          ry2_write
  0047D387   push    0047D5CC                          ry2_read
  0047D3AB   mov     edx, 0047D5E0                     系统中未能找到usb加密设备
  0047D3F5   mov     edx, 0047D604                     与usb加密设备通讯出现异常: %x
  0047D452   mov     edx, 0047D62C                     读取usb加密设备出现异常: %x
  0047D498   mov     edx, 0047D650                     |
  0047D4CB   mov     edx, 0047D65C                     yangzhounature
  0047D4FE   mov     edx, 0047D65C                     yangzhounature
  0047D6C6   mov     edx, 0047D8A8                     系统中未能找到usb加密设备
  0047D71C   mov     edx, 0047D8CC                     与usb加密设备通讯出现异常: %x
  0047D777   mov     edx, 0047D8F4                     读取usb加密设备出现异常: %x
  0047D7C1   mov     edx, 0047D918                     |
  0047D7F1   mov     edx, 0047D924                     yangzhounature
  0047D813   mov     edx, 0047D924                     yangzhounature
  0047D850   mov     edx, 0047D93C                     usb加密设备身份验证失败
  0047D98B   mov     edx, 0047DA0C                     请插入usb加密设备以验证用户身份
  
  
  点击ry2_find处,在断首下断
  
  0047D2A4  /.  55            push    ebp                              ;  (initial cpu selection)
  0047D2A5  |.  8BEC          mov     ebp, esp
  0047D2A7  |.  81C4 D8FDFFFF add     esp, -228
  0047D2AD  |.  53            push    ebx
  0047D2AE  |.  56            push    esi
  0047D2AF  |.  57            push    edi
  0047D2B0  |.  33C9          xor     ecx, ecx
  0047D2B2  |.  898D DCFDFFFF mov     dword ptr [ebp-224], ecx
  0047D2B8  |.  898D D8FDFFFF mov     dword ptr [ebp-228], ecx
  0047D2BE  |.  898D E4FDFFFF mov     dword ptr [ebp-21C], ecx
  0047D2C4  |.  898D E0FDFFFF mov     dword ptr [ebp-220], ecx
  0047D2CA  |.  898D E8FDFFFF mov     dword ptr [ebp-218], ecx
  0047D2D0  |.  894D F8       mov     dword ptr [ebp-8], ecx
  0047D2D3  |.  8BF0          mov     esi, eax
  0047D2D5  |.  BB E82C4800   mov     ebx, 00482CE8
  0047D2DA  |.  33C0          xor     eax, eax
  0047D2DC  |.  55            push    ebp
  0047D2DD  |.  68 59D54700   push    0047D559
  0047D2E2  |.  64:FF30       push    dword ptr fs:[eax]
  0047D2E5  |.  64:8920       mov     dword ptr fs:[eax], esp
  0047D2E8  |.  33D2          xor     edx, edx
  0047D2EA  |.  8B86 34030000 mov     eax, dword ptr [esi+334]
  0047D2F0  |.  E8 6F1AFBFF   call    0042ED64
  0047D2F5  |.  68 68D54700   push    0047D568                         ; /rockey2.dll
  0047D2FA  |.  E8 BD94F8FF   call    <jmp.&kernel32.LoadLibraryA>     ; \LoadLibraryA
  0047D2FF  |.  8903          mov     dword ptr [ebx], eax
  0047D301  |.  833B 00       cmp     dword ptr [ebx], 0
  0047D304  |.  75 18         jnz     short 0047D31E
  0047D306  |.  BA 7CD54700   mov     edx, 0047D57C                    ;  缺少rockey2.dll文件
  0047D30B  |.  8BC6          mov     eax, esi
  0047D30D  |.  E8 62FFFFFF   call    0047D274
  0047D312  |.  A1 541D4800   mov     eax, dword ptr [481D54]
  0047D317  |.  8B00          mov     eax, dword ptr [eax]
  0047D319  |.  E8 72B4FEFF   call    00468790
  0047D31E  |>  68 90D54700   push    0047D590                         ; /ry2_find
  0047D323  |.  8B03          mov     eax, dword ptr [ebx]             ; |
  0047D325  |.  50            push    eax                              ; |hModule
  0047D326  |.  E8 C993F8FF   call    <jmp.&kernel32.GetProcAddress>   ; \GetProcAddress
  0047D32B  |.  8B15 781A4800 mov     edx, dword ptr [481A78]          ;  Browser.00482CB4
  0047D331  |.  8902          mov     dword ptr [edx], eax
  0047D333  |.  68 9CD54700   push    0047D59C                         ; /ry2_open
  0047D338  |.  8B03          mov     eax, dword ptr [ebx]             ; |
  0047D33A  |.  50            push    eax                              ; |hModule
  0047D33B  |.  E8 B493F8FF   call    <jmp.&kernel32.GetProcAddress>   ; \GetProcAddress
  0047D340  |.  8B15 4C1C4800 mov     edx, dword ptr [481C4C]          ;  Browser.00482CB8
  0047D346  |.  8902          mov     dword ptr [edx], eax
  0047D348  |.  68 A8D54700   push    0047D5A8                         ; /ry2_close
  0047D34D  |.  8B03          mov     eax, dword ptr [ebx]             ; |
  0047D34F  |.  50            push    eax                              ; |hModule
  0047D350  |.  E8 9F93F8FF   call    <jmp.&kernel32.GetProcAddress>   ; \GetProcAddress
  0047D355  |.  8B15 601D4800 mov     edx, dword ptr [481D60]          ;  Browser.00482CBC
  0047D35B  |.  8902          mov     dword ptr [edx], eax
  0047D35D  |.  68 B4D54700   push    0047D5B4                         ; /ry2_genuid
  0047D362  |.  8B03          mov     eax, dword ptr [ebx]             ; |
  0047D364  |.  50            push    eax                              ; |hModule
  0047D365  |.  E8 8A93F8FF   call    <jmp.&kernel32.GetProcAddress>   ; \GetProcAddress
  0047D36A  |.  8B15 A81B4800 mov     edx, dword ptr [481BA8]          ;  Browser.00482CC0
  0047D370  |.  8902          mov     dword ptr [edx], eax
  0047D372  |.  68 C0D54700   push    0047D5C0                         ; /ry2_write
  0047D377  |.  8B03          mov     eax, dword ptr [ebx]             ; |
  0047D379  |.  50            push    eax                              ; |hModule
  0047D37A  |.  E8 7593F8FF   call    <jmp.&kernel32.GetProcAddress>   ; \GetProcAddress
  0047D37F  |.  8B15 0C1B4800 mov     edx, dword ptr [481B0C]          ;  Browser.00482CC8
  0047D385  |.  8902          mov     dword ptr [edx], eax
  0047D387  |.  68 CCD54700   push    0047D5CC                         ; /ry2_read
  0047D38C  |.  8B03          mov     eax, dword ptr [ebx]             ; |
  0047D38E  |.  50            push    eax                              ; |hModule
  0047D38F  |.  E8 6093F8FF   call    <jmp.&kernel32.GetProcAddress>   ; \GetProcAddress
  0047D394  |.  8B15 E01C4800 mov     edx, dword ptr [481CE0]          ;  Browser.00482CC4
  0047D39A  |.  8902          mov     dword ptr [edx], eax
  0047D39C  |.  A1 781A4800   mov     eax, dword ptr [481A78]
  0047D3A1  |.  8B00          mov     eax, dword ptr [eax]
  0047D3A3  |.  FFD0          call    eax                              ;  Rockey2.RY2_Find 查找加密锁
  0047D3A5      8BD8          mov     ebx, eax                         ;  无狗返回 A010000B
  0047D3A7  |.  85DB          test    ebx, ebx
  0047D3A9  |.  7F 18         jg      short 0047D3C3
  0047D3AB  |.  BA E0D54700   mov     edx, 0047D5E0                    ;  系统中未能找到usb加密设备
  0047D3B0  |.  8BC6          mov     eax, esi
  0047D3B2  |.  E8 BDFEFFFF   call    0047D274
  0047D3B7  |.  A1 541D4800   mov     eax, dword ptr [481D54]
  0047D3BC  |.  8B00          mov     eax, dword ptr [eax]
  0047D3BE  |.  E8 CDB3FEFF   call    00468790
  0047D3C3  |>  8D45 FC       lea     eax, dword ptr [ebp-4]
  0047D3C6  |.  50            push    eax
  0047D3C7  |.  68 F90F6F37   push    376F0FF9
  0047D3CC  |.  6A 01         push    1
  0047D3CE  |.  A1 4C1C4800   mov     eax, dword ptr [481C4C]
  0047D3D3  |.  8B00          mov     eax, dword ptr [eax]
  0047D3D5  |.  FFD0          call    eax                              ;  Rockey2.RY2_Open 打开加密锁
  0047D3D7      8BD8          mov     ebx, eax                         ;  无狗则返回  A0100001
  0047D3D9  |.  85DB          test    ebx, ebx
  0047D3DB  |.  7D 38         jge     short 0047D415
  0047D3DD  |.  6A 00         push    0
  0047D3DF  |.  899D ECFDFFFF mov     dword ptr [ebp-214], ebx
  0047D3E5  |.  C685 F0FDFFFF>mov     byte ptr [ebp-210], 0
  0047D3EC  |.  8D8D ECFDFFFF lea     ecx, dword ptr [ebp-214]
  0047D3F2  |.  8D45 F8       lea     eax, dword ptr [ebp-8]
  0047D3F5  |.  BA 04D64700   mov     edx, 0047D604                    ;  与usb加密设备通讯出现异常: %x
  0047D3FA  |.  E8 E9C1F8FF   call    004095E8
  0047D3FF  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
  0047D402  |.  8BC6          mov     eax, esi
  0047D404  |.  E8 6BFEFFFF   call    0047D274
  0047D409  |.  A1 541D4800   mov     eax, dword ptr [481D54]
  0047D40E  |.  8B00          mov     eax, dword ptr [eax]
  0047D410  |.  E8 7BB3FEFF   call    00468790
  0047D415  |>  8BFB          mov     edi, ebx
  0047D417  |.  8D85 F7FDFFFF lea     eax, dword ptr [ebp-209]
  0047D41D  |.  50            push    eax
  0047D41E  |.  6A 00         push    0
  0047D420  |.  57            push    edi
  0047D421  |.  A1 E01C4800   mov     eax, dword ptr [481CE0]
  0047D426  |.  8B00          mov     eax, dword ptr [eax]
  0047D428  |.  FFD0          call    eax                              ;  Rockey2.RY2_Read  读取加密锁
  0047D42A  |.  8BD8          mov     ebx, eax                         ;  无狗返回 A0100002
  0047D42C  |.  85DB          test    ebx, ebx
  0047D42E  |.  7D 42         jge     short 0047D472
  0047D430  |.  57            push    edi
  0047D431  |.  A1 601D4800   mov     eax, dword ptr [481D60]
  0047D436  |.  8B00          mov     eax, dword ptr [eax]
  0047D438  |.  FFD0          call    eax
  0047D43A  |.  6A 00         push    0
  0047D43C  |.  899D ECFDFFFF mov     dword ptr [ebp-214], ebx
  0047D442  |.  C685 F0FDFFFF>mov     byte ptr [ebp-210], 0
  0047D449  |.  8D8D ECFDFFFF lea     ecx, dword ptr [ebp-214]
  0047D44F  |.  8D45 F8       lea     eax, dword ptr [ebp-8]
  0047D452  |.  BA 2CD64700   mov     edx, 0047D62C                    ;  读取usb加密设备出现异常: %x
  0047D457  |.  E8 8CC1F8FF   call    004095E8
  0047D45C  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
  0047D45F  |.  8BC6          mov     eax, esi
  0047D461  |.  E8 0EFEFFFF   call    0047D274
  0047D466  |.  A1 541D4800   mov     eax, dword ptr [481D54]
  0047D46B  |.  8B00          mov     eax, dword ptr [eax]
  0047D46D  |.  E8 1EB3FEFF   call    00468790
  0047D472  |>  57            push    edi
  0047D473  |.  A1 601D4800   mov     eax, dword ptr [481D60]
  0047D478  |.  8B00          mov     eax, dword ptr [eax]
  0047D47A  |.  FFD0          call    eax
  0047D47C  |.  8D85 E8FDFFFF lea     eax, dword ptr [ebp-218]
  0047D482  |.  8D95 F7FDFFFF lea     edx, dword ptr [ebp-209]
  0047D488  |.  B9 01020000   mov     ecx, 201
  0047D48D  |.  E8 9A6FF8FF   call    0040442C
  0047D492  |.  8B85 E8FDFFFF mov     eax, dword ptr [ebp-218]
  0047D498  |.  BA 50D64700   mov     edx, 0047D650                    ;  |
  0047D49D  |.  E8 3EECFFFF   call    0047C0E0
  0047D4A2  |.  8BD8          mov     ebx, eax
  0047D4A4  |.  8BC3          mov     eax, ebx
  0047D4A6  |.  8B10          mov     edx, dword ptr [eax]
  0047D4A8  |.  FF52 14       call    dword ptr [edx+14]
  0047D4AB  |.  83F8 02       cmp     eax, 2
  0047D4AE  |.  75 6F         jnz     short 0047D51F
  0047D4B0  |.  8D8D E0FDFFFF lea     ecx, dword ptr [ebp-220]
  0047D4B6  |.  33D2          xor     edx, edx
  0047D4B8  |.  8BC3          mov     eax, ebx
  0047D4BA  |.  8B38          mov     edi, dword ptr [eax]
  0047D4BC  |.  FF57 0C       call    dword ptr [edi+C]
  0047D4BF  |.  8B85 E0FDFFFF mov     eax, dword ptr [ebp-220]
  0047D4C5  |.  8D8D E4FDFFFF lea     ecx, dword ptr [ebp-21C]
  0047D4CB  |.  BA 5CD64700   mov     edx, 0047D65C                    ;  yangzhounature
  0047D4D0  |.  E8 EBF0FFFF   call    0047C5C0
  0047D4D5  |.  8B95 E4FDFFFF mov     edx, dword ptr [ebp-21C]
  0047D4DB  |.  B8 E02C4800   mov     eax, 00482CE0
  0047D4E0  |.  E8 2B6DF8FF   call    00404210
  0047D4E5  |.  8D8D D8FDFFFF lea     ecx, dword ptr [ebp-228]
  0047D4EB  |.  BA 01000000   mov     edx, 1
  0047D4F0  |.  8BC3          mov     eax, ebx
  0047D4F2  |.  8B18          mov     ebx, dword ptr [eax]
  0047D4F4  |.  FF53 0C       call    dword ptr [ebx+C]
  0047D4F7  |.  8B85 D8FDFFFF mov     eax, dword ptr [ebp-228]
  0047D4FD  |.  50            push    eax
  0047D4FE  |.  BA 5CD64700   mov     edx, 0047D65C                    ;  yangzhounature
  0047D503  |.  8D8D DCFDFFFF lea     ecx, dword ptr [ebp-224]
  0047D509  |.  58            pop     eax
  0047D50A  |.  E8 B1F0FFFF   call    0047C5C0
  0047D50F  |.  8B95 DCFDFFFF mov     edx, dword ptr [ebp-224]
  0047D515  |.  B8 E42C4800   mov     eax, 00482CE4
  0047D51A  |.  E8 F16CF8FF   call    00404210
  0047D51F  |>  C605 EC2C4800>mov     byte ptr [482CEC], 1
  0047D526  |.  B2 01         mov     dl, 1
  0047D528  |.  8B86 34030000 mov     eax, dword ptr [esi+334]
  0047D52E  |.  E8 3118FBFF   call    0042ED64
  0047D533  |.  33C0          xor     eax, eax
  0047D535  |.  5A            pop     edx
  0047D536  |.  59            pop     ecx
  0047D537  |.  59            pop     ecx
  0047D538  |.  64:8910       mov     dword ptr fs:[eax], edx
  0047D53B  |.  68 60D54700   push    0047D560
  0047D540  |>  8D85 D8FDFFFF lea     eax, dword ptr [ebp-228]
  0047D546  |.  BA 05000000   mov     edx, 5
  0047D54B  |.  E8 906CF8FF   call    004041E0
  0047D550  |.  8D45 F8       lea     eax, dword ptr [ebp-8]
  0047D553  |.  E8 646CF8FF   call    004041BC
  0047D558  \.  C3            retn
  0047D559   .^ E9 DE65F8FF   jmp     00403B3C
  0047D55E   .^ EB E0         jmp     short 0047D540
  0047D560   .  5F            pop     edi
  0047D561   .  5E            pop     esi
  0047D562   .  5B            pop     ebx
  0047D563   .  8BE5          mov     esp, ebp
  0047D565   .  5D            pop     ebp
  0047D566   .  C3            retn
  
  
  
  查找一下文档(楼下有附录),返回值小于0的都是错误代码,手上没有狗不知道实际返回值是多少,因此把校验狗的三个call的返回值全部改回1。调试时进入三个0047D3A3、

0047D3D5、0047D428,全写上以下代码:
  
  mov eax,1
  retn
  --------------------------------------------------------------------------------------------------
  0047D6C6   mov     edx, 0047D8A8                     系统中未能找到usb加密设备
  0047D71C   mov     edx, 0047D8CC                     与usb加密设备通讯出现异常: %x
  0047D777   mov     edx, 0047D8F4                     读取usb加密设备出现异常: %x
  
  在字符串看到在后面还有一处地方是校验狗的,但是已经改了返回值,所以已经绕过验证了。
  
  最后复制全部修改到可执行文件为rockey2.dll,覆盖目录下原版的rockey2.dll。再打开软件,已经可以正常打开了,但是软件还没有可以正常使用,登陆框中“用户名”那栏

编辑框没有显示,因此无法正常登陆使用软件,应该是狗内的数据没有正确还原。
  
  请问大家如何在无狗的情况下实现完美爆破呢?下面附有原程序和我爆破的rockey2.dll,覆盖到原版目录即可。软件比较简单细小,便于研究,有兴趣的朋友可以调试一下,顺

便指导一下我等菜鸟。(*^__^*) 嘻嘻……
  
  
  
  
--------------------------------------------------------------------------------

                                                       2009年04月25日 04:54:26

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费
支持
分享
最新回复 (4)
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
转过来的,关于Rockey2的一点知识  :http://bbs.pediy.com/showthread.php?t=67191

// ====================================================================

// 1. 查找计算机上连接的 Rockey2 加密锁设备
EXTERN_C int WINAPI RY2_Find();
// 返回:
// 如果返回值小于 0,表示返回的是一个错误编码,具体含义请看下面的错误编码。
// 如果返回值为 0,表示没有任何 Rockey2 设备存在。
// 如果返回值大于 0,返回的是找到的 Rockey2 加密锁的个数。

// ====================================================================

// 2. 打开指定的加密锁
EXTERN_C int WINAPI RY2_Open(int mode, DWORD uid, DWORD* hid);
// 输入:
// mode 是打开加密锁的方式
// mode = 0 表示的是打开第1个找到的 Rockey2,不理会 UID 和 HID
// mode > 0 表示的是按 UID 方式打开,这时候 mode 的值表示的是要打开锁的序号
//          譬如: uid=12345678, mode=2 表示的是希望打开 uid 等于12345678 的
//          第2把加密锁。
// mode = -1 表示的是按 HID 方式打开,要求 *hid 不能为 0
#define AUTO_MODE  0
#define HID_MODE  -1
// uid(UserID)
// 当按 UID 方式打开的时候,在这给出要打开加密锁的 UID,此 UID 就是用户调用
// RY2_GenUID 功能获得的用户 ID。
// hid
// 这个是加密锁的硬件 ID,这是1个输入/输出值,如果按 HID 方式打开加密锁的
// 时候,表示希望打开硬件ID = *hid 的加密锁。
// 不论以哪种方式打开加密锁,在成功打开加密锁以后会在这返回加密锁的硬件 ID
// 返回值:
// 大于等于0    表示成功,返回的就是打开的加密锁的句柄
// 小于0      返回的是一个错误编码,具体含义请看下面的错误编码部分。

// ====================================================================

// 3. 关闭指定的加密锁
EXTERN_C void WINAPI RY2_Close(int handle);
// 输入:
// handle 设备的句柄,跟 RY2_Open 命令返回的 handle 一致。
// 返回:
// 返回的是一个错误编码,具体含义请看下面的错误编码部分。

// ====================================================================

// 4. 生成用户 ID
EXTERN_C int WINAPI RY2_GenUID(int handle, DWORD* uid, char* seed, int isProtect);
// 输入:
// handle 设备的句柄,跟 RY2_Open 命令返回的 handle 一致。
// uid 输出参数,生成的用户 ID 从此参数返回
// seed 用户给出的用于生成用户 ID 的种子,这是一个最大长度可以是 64 个字节的字符串
// isProtect 用来指定此 Rockey2 是否可写,0 是可写,1 是不可写
#define ROCKEY2_DISABLE_WRITE_PROTECT  0
#define ROCKEY2_ENSABLE_WRITE_PROTECT  1
// 返回:
// 返回的是一个错误编码,具体含义请看下面的错误编码部分。

// ====================================================================

// 5. 读取加密锁内容
EXTERN_C int WINAPI RY2_Read(int handle, int block_index, char* buffer512);
// 输入:
// handle 设备的句柄,跟 RY2_Open 命令返回的 handle 一致。
// block_index 块索引,指明要读取的是哪1个块,取值为(0-4)
// buffer512 读出块的缓冲区,因为每个块的长度固定为 512 个字节,所以这个
// buffer 的大小至少是 512 个字节
// 返回:
// 返回的是一个错误编码,具体含义请看下面的错误编码部分。

// ====================================================================

// 6. 写入加密锁内容
EXTERN_C int WINAPI RY2_Write(int handle, int block_index, char* buffer512);
// 输入:
// handle 设备的句柄,跟 RY2_Open 命令返回的 handle 一致。
// block_index 块索引,指明要写入的是哪1个块,取值为(0-4)
// buffer512 写入块的缓冲区,因为每个块的长度固定为 512 个字节,所以这个
// buffer 的大小至少是 512 个字节
// 返回:
// 返回的是一个错误编码,具体含义请看下面的错误编码部分。

// 错误编码 ===========================================================

// 成功,没有错误
#define RY2ERR_SUCCESS                  0

// 没有找到给定要求的设备(参数错误)
#define RY2ERR_NO_SUCH_DEVICE              0xA0100001

// 在调用此功能前需要先调用 RY2_Open 打开设备(操作错误)
#define RY2ERR_NOT_OPENED_DEVICE            0xA0100002

// 给出的 UID 错误(参数错误)
#define RY2ERR_WRONG_UID                0xA0100003

// 读写操作给出的块索引错误(参数错误)
#define RY2ERR_WRONG_INDEX                0xA0100004

// 调用 GenUID 功能的时候,给出的 seed 字符串长度超过了 64 个字节(参数错误)
#define RY2ERR_TOO_LONG_SEED              0xA0100005

// 试图改写已经写保护的硬件(操作错误)
#define RY2ERR_WRITE_PROTECT              0xA0100006

// 打开设备错(Windows 错误)
#define RY2ERR_OPEN_DEVICE                0xA0100007

// 读记录错(Windows 错误)
#define RY2ERR_READ_REPORT                0xA0100008

// 写记录错(Windows 错误)
#define RY2ERR_WRITE_REPORT                0xA0100009

// 内部错误(Windows 错误)
#define RY2ERR_SETUP_DI_GET_DEVICE_INTERFACE_DETAIL    0xA010000A

// 内部错误(Windows 错误)
#define RY2ERR_GET_ATTRIBUTES              0xA010000B

// 内部错误(Windows 错误)
#define RY2ERR_GET_PREPARSED_DATA            0xA010000C

// 内部错误(Windows 错误)
#define RY2ERR_GETCAPS                  0xA010000D

// 内部错误(Windows 错误)
#define RY2ERR_FREE_PREPARSED_DATA            0xA010000E

// 内部错误(Windows 错误)
#define RY2ERR_FLUSH_QUEUE                0xA010000F

// 内部错误(Windows 错误)
#define RY2ERR_SETUP_DI_CLASS_DEVS            0xA0100010

// 内部错误(Windows 错误)
#define RY2ERR_GET_SERIAL                0xA0100011

// 内部错误(Windows 错误)
#define RY2ERR_GET_PRODUCT_STRING            0xA0100012

// 内部错误
#define RY2ERR_TOO_LONG_DEVICE_DETAIL          0xA0100013

// 未知的设备(硬件错误)
#define RY2ERR_UNKNOWN_DEVICE              0xA0100020

// 操作验证错误(硬件错误)
#define RY2ERR_VERIFY                  0xA0100021

// 未知错误(硬件错误)
#define RY2ERR_UNKNOWN_ERROR              0xA010FFFF
2009-4-25 05:07
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看了就头疼
加密狗挺难的
2009-4-25 14:57
0
雪    币: 7
活跃值: (84)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=丑男无敌;611391]【文章标题】: 不完全爆破Rockey2加密狗
  
  
  查找一下文档(楼下有附录),返回值小于0的都是错误代码,手上没有狗不知道实际返回值是多少,因此把校验狗的三个call的返回值全部改回1。调试时进入三个0047D3A3、

0047D3D5、0047D428,全写上以下代码:
  
  mov eax,1
  retn

第一次返回EAX=1,第二、三次你改成返回EAX=0看看是什么结果
2009-4-25 17:16
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
结果一样
2009-4-25 19:50
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册