导航:首页 > 文档加密 > 加密狗的fb1

加密狗的fb1

发布时间:2023-10-02 20:58:16

加密狗复制1个多少钱

可能大家都会以为加密狗复制就像U盘数据拷贝一样简单,其实加密狗复制不像好客户想象的那样把加密狗中的数据读出来再复制到一个新的加密狗中,实际情况可不是这样简单,加密狗不像U盘,加密狗内部其实是一部完整的计算机,也有自己的cpu、内存等,只是计算速度相对较慢而已,因此可以完成一些简单的任务,但是即使是一些简单的任务对于我们(逆向开发技术网)来说也是非常复杂的,如果想从中获取全部的数据困难程度可想而知。一般只能分析加密狗和软件之间的通讯数据。其实这一步就是破解加密狗,把有用的数据提取出来,然后写回空的加密狗既是复制,如果用软件模拟即为“破解”。

软件加密狗反向开发分为2种:
1、加密狗破解/解密:主要是通过技术手段截取软件和加密狗直接的数据记录,分析加密狗的算法,模拟仿真加密狗内部单片机芯片程序,拦截程序修改软件和加密狗之间的通讯。破解成功后技术方会开发一个写狗工具,客户可以使用写狗工具自己不限量烧写加密狗。(这等于是技术方把软件技术一起出售了,让不懂技术的客户可以傻瓜式的开发软件,加密狗破解价格比较高一般都在5000元以上)
2、加密狗复制/克隆:和加密狗破解一样,只是没有写狗工具,客户不能自己写狗。技术方会按照客户所需加密狗的数量定价,数量越多越便宜,一般100-500/个。

❷ 怎么破解USB加密狗

hasp 系列加密狗破解有的朋友认为很难,其实不然,只要有足够的耐心和技术基础。是没有问题的。
--------------------------------------------------------------------------------------------------------
004015FF |. 8D95 ACFBFFFF lea edx,[local.277]
00401605 |. 52 push edx
00401606 |. 8B85 F8FBFFFF mov eax,[local.258]
0040160C |. 50 push eax
0040160D |. 8B8D A8FBFFFF mov ecx,[local.278]
00401613 |. 51 push ecx
00401614 |. 68 D4E54000 push APP.0040E5D4 ; ASCII "EN"
00401619 |. 8B55 E8 mov edx,[local.6]
0040161C |. 52 push edx
0040161D |. E8 8E230000 call <jmp.&user_dll.sui_In> ;这个CALL只要一执行,就死掉,所以必须跟进
00401622 |. 8945 EC mov [local.5],eax
00401625 |. 8B45 EC mov eax,[local.5]
00401628 |> 8B4D F4 mov ecx,[local.3]
0040162B |. 64:890D 00000000 mov fs:[0],ecx
00401632 |. 8B4D E4 mov ecx,[local.7]
00401635 |. E8 C72D0000 call APP.00404401
0040163A |. 8BE5 mov esp,ebp
0040163C |. 5D pop ebp
0040163D \. C3 retn
--------------------------------------------------------------------------------------------------------
6、跟进后出现一下代码,看第一行,就是0040161D 处调用的函数,再看右面的注释,心跳加快,InitSystem,从名字上你都能猜想它会干什么,对,读狗的相关代码就应该在这儿初始化(当然还要初始化其他信息),继续跟进
--------------------------------------------------------------------------------------------------------
004039B0 $- FF25 C8554000 jmp ds:[<&user_In>] ; InitSystem
004039B6 $- FF25 C4554000 jmp ds:[<&user_Star>] ; StartProgram
004039BC $- FF25 C0554000 jmp ds:[<&user_Mai>]
004039C2 $- FF25 AC544000 jmp ds:[<&XXX_DLL.#3>]
004039C8 $- FF25 A8544000 jmp ds:[<&XXX_DLL.#47>]
--------------------------------------------------------------------------------------------------------
7、跟进后,代码是一系列的IsBadReadPtr,由此判断该处是初始化内存工作,离读狗还用有一段距离。部分代码如下,还有更多的IsBadReadPtr,没必要就不贴了,贴一点提示思路即可。
一直按F8,痛苦的是这段代码中有个循环,要循环20多次,稍不留神就结束循环,立刻进入另一个关键CALL,程序又死掉。所以在这儿又费了我很多时间。
--------------------------------------------------------------------------------------------------------
00EF5940 > 55 push ebp ;InitSystem函数
00EF5941 8BEC mov ebp,esp
00EF5943 81EC 280C0000 sub esp,0C28
00EF5949 A1 6C2EF100 mov eax,ds:[F12E6C]
00EF594E 8945 E0 mov ss:[ebp-20],eax
00EF5951 57 push edi
00EF5952 8B45 0C mov eax,ss:[ebp+C]
00EF5955 50 push eax
00EF5956 68 6848F100 push user_dll.00F14868
00EF595B E8 34F70000 call <jmp.&MSVCR71.strcpy>
00EF5960 83C4 08 add esp,8
00EF5963 B9 583AF100 mov ecx,user_dll.00F13A58
00EF5968 85C9 test ecx,ecx
00EF596A 74 46 je short user_dll.00EF59B2
00EF596C 6A 01 push 1
00EF596E 68 583AF100 push user_dll.00F13A58
00EF5973 FF15 1072F000 call ds:[<&KERNEL32.IsBadWritePtr>] ; kernel32.IsBadWritePtr
00EF5979 85C0 test eax,eax
00EF597B 75 35 jnz short user_dll.00EF59B2
00EF597D 837D 10 00 cmp dword ptr ss:[ebp+10],0
00EF5981 74 26 je short user_dll.00EF59A9
00EF5983 6A 01 push 1
00EF5985 8B55 10 mov edx,ss:[ebp+10]
00EF5988 52 push edx
00EF5989 FF15 1472F000 call ds:[<&KERNEL32.IsBadReadPtr>] ; kernel32.IsBadReadPtr
00EF598F 85C0 test eax,eax
00EF5991 75 16 jnz short user_dll.00EF59A9
00EF5993 68 04010000 push 104
00EF5998 8B45 10 mov eax,ss:[ebp+10]
00EF599B 50 push eax
00EF599C 68 583AF100 push user_dll.00F13A58
00EF59A1 FF15 1872F000 call ds:[<&KERNEL32.lstrcpynW>] ; kernel32.lstrcpynW
--------------------------------------------------------------------------------------------------------
8、上面代码执行结束后迅速来到下面代码,注释处的CALL执行就死,跟进
--------------------------------------------------------------------------------------------------------
00EF5D8A 6A 03 push 3
00EF5D8C 68 10000100 push 10010
00EF5D91 8B15 9C3EF100 mov edx,ds:[F13E9C]
00EF5D97 83C2 12 add edx,12
00EF5D9A 52 push edx
00EF5D9B 68 D80CF100 push user_dll.00F10CD8
00EF5DA0 A1 9C3EF100 mov eax,ds:[F13E9C]
00EF5DA5 8B88 2C0F0000 mov ecx,ds:[eax+F2C]
00EF5DAB 51 push ecx
00EF5DAC E8 45E70000 call <jmp.&XXX_dll.#66_UserMessage>
00EF5DB1 EB 15 jmp short user_dll.00EF5DC8
00EF5DB3 E8 580B0000 call user_dll.00EF6910 ;该CALL执行就死掉,读狗函数在这里
00EF5DB8 85C0 test eax,eax
00EF5DBA 74 0C je short user_dll.00EF5DC8
--------------------------------------------------------------------------------------------------------
9、跟进后一直按F8,遇到CALL user_dll.00XXXXXX字样的要格外小心,果然执行到某个CALL的时候死掉,只好记住地址,重设断点,重新来,继续跟进死掉的CALL。由于这儿一直是寻找读狗函数,所以不再贴代码了,大家只看思路,无用代码太多,会扰乱思路.
10、不厌其烦的重复上述过程突然发现下面代码,相信仅仅函数名足以让你兴奋
-------------------------------------------------------------------------------------------------------
00EF6EB8 51 push ecx
00EF6EB9 68 680AF100 push user_dll.00F10A68
00EF6EBE 8B15 9C3EF100 mov edx,ds:[F13E9C]
00EF6EC4 83C2 12 add edx,12
00EF6EC7 52 push edx
00EF6EC8 E8 85D70000 call <jmp.&HLK_dll.#13_hlk_LogIn> ;LogIn,登录狗
00EF6ECD 85C0 test eax,eax ;判断返回值,如是0
00EF6ECF 0F84 B2000000 je user_dll.00EF6F87 ;跳走,死掉
00EF6ED5 C705 6C3EF100 01000000 mov dword ptr ds:[F13E6C],1
00EF6EDF E8 5CD70000 call <jmp.&HLK_dll.#10_hlk_Avail> ;读另一个数据,为ReadDong做准备,虽然
00EF6EE4 85C0 test eax,eax ;不知道读什么,但返回值如是0
00EF6EE6 0F84 9B000000 je user_dll.00EF6F87 ;跳走,死掉
00EF6EEC 8D85 5CFFFFFF lea eax,ss:[ebp-A4]
00EF6EF2 50 push eax
00EF6EF3 E8 54D70000 call <jmp.&HLK_dll.#15_hlk_ReadDong> ;再读
00EF6EF8 85C0 test eax,eax ;判断返回值,如是0
00EF6EFA 0F84 87000000 je user_dll.00EF6F87 ;OVER
00EF6F00 B9 2848F100 mov ecx,user_dll.00F14828 ;判断ECX是否为0,跟踪发现该值是狗的编号
00EF6F05 85C9 test ecx,ecx ;是0与否,不影响程序运行
00EF6F07 74 2B je short user_dll.00EF6F34
00EF6F09 8D55 98 lea edx,ss:[ebp-68] ;该地址存放狗的编号
00EF6F0C 85D2 test edx,edx
00EF6F0E 74 16 je short user_dll.00EF6F26
00EF6F10 6A 06 push 6
00EF6F12 8D45 98 lea eax,ss:[ebp-68]
00EF6F15 50 push eax
00EF6F16 68 2848F100 push user_dll.00F14828
00EF6F1B FF15 E875F000 call ds:[<&MSVCR71.strncpy>] ; MSVCR71.strncpy
--------------------------------------------------------------------------------------------------------
11、聪明的你肯定知道该做什么了,对,只要把00EF6ECF、00EF6EE6、00EF6EFA三处的je改为jne即可跳过狗的检查。我毫不犹豫的就改了,运行,然而并没有出现预想的兴奋的事情。出现一个错误提示“没有发现可选文件”。
12、“可选文件”是什么意思,到软件安装目录查看,有个OPTION文件夹,里面有很多文件,用UltraEdit打开,看不懂呵呵
13、将改文件夹中的文件所有文件删除,带狗运行,出现和11步同样的提示;恢复文件,运行正常。由此可见,解密那些文件需要狗中的数据,大家知道HASP狗用的是AES,难道狗中存放着AES密码??带着这样的疑问跟踪程序,来到下面代码
--------------------------------------------------------------------------------------------------------00EF723F 8B8D 68F6FFFF mov ecx,ss:[ebp-998] ;压入的三个参数意义就不说明了,因为没必要
00EF7245 51 push ecx
00EF7246 8D95 64F8FFFF lea edx,ss:[ebp-79C]
00EF724C 52 push edx
00EF724D 8D85 BCFAFFFF lea eax,ss:[ebp-544]
00EF7253 50 push eax
00EF7254 E8 47180000 call user_dll.00EF8AA0 ;该函数执行完后,EDX会出现一些明码,明码信息

大概为APPLICAITON=XXX;OPTION=XXX.....是不是很像文件启动需要检查的选项?所以要弄懂解密算法,必须跟进
--------------------------------------------------------------------------------------------------------
14、跟进后,部分代码如下,这部分代码很关键,所以贴的比较多。但是有很多是内核函数,很容易读懂。
--------------------------------------------------------------------------------------------------------
00EF8B30 8D8D 68FDFFFF lea ecx,ss:[ebp-298]
00EF8B36 51 push ecx
00EF8B37 8B55 0C mov edx,ss:[ebp+C]
00EF8B3A 83C2 2C add edx,2C
00EF8B3D 52 push edx
00EF8B3E 68 5038F100 push user_dll.00F13850
00EF8B43 E8 14BD0000 call <jmp.&XXX_DLL.#100_ExtendPathName> ; 获取文件完整路径
00EF8B48 6A 00 push 0
00EF8B4A 8D85 70FFFFFF lea eax,ss:[ebp-90]
00EF8B50 50 push eax
00EF8B51 8D8D 68FDFFFF lea ecx,ss:[ebp-298]
00EF8B57 51 push ecx
00EF8B58 E8 63BC0000 call <jmp.&XXX_DLL.#47_MakeSString>
00EF8B5D 50 push eax
00EF8B5E FF15 0872F000 call ds:[<&KERNEL32.OpenFile>] ; 打开文件
00EF8B64 8985 54FDFFFF mov ss:[ebp-2AC],eax
00EF8B6A 83BD 54FDFFFF FF cmp dword ptr ss:[ebp-2AC],-1
00EF8B71 74 55 je short user_dll.00EF8BC8
00EF8B73 8B95 50FDFFFF mov edx,ss:[ebp-2B0]
00EF8B79 52 push edx
00EF8B7A 8B85 60FDFFFF mov eax,ss:[ebp-2A0] ;存放读入数据的缓冲区,关键(后面破解用上)
00EF8B80 50 push eax
00EF8B81 8B8D 54FDFFFF mov ecx,ss:[ebp-2AC]
00EF8B87 51 push ecx
00EF8B88 FF15 F071F000 call ds:[<&KERNEL32._hread>] ; 读文件,ebp-2A0为存放读入数据的缓冲区
00EF8B8E 3B85 50FDFFFF cmp eax,ss:[ebp-2B0]
00EF8B94 75 19 jnz short user_dll.00EF8BAF
00EF8B96 8B55 10 mov edx,ss:[ebp+10]
00EF8B99 52 push edx
00EF8B9A 8B85 64FDFFFF mov eax,ss:[ebp-29C]
00EF8BA0 50 push eax
00EF8BA1 8B8D 60FDFFFF mov ecx,ss:[ebp-2A0] ;存放解密后的数据,和读入缓冲区地址相同
00EF8BA7 51 push ecx
00EF8BA8 E8 B1BA0000 call <jmp.&HLK_dll.#12_hlk_Crypt> ;对读入的数据进行解密,须弄懂算法
00EF8BAD EB 0A jmp short user_dll.00EF8BB9
00EF8BAF C785 64FDFFFF 00000000 mov dword ptr ss:[ebp-29C],0
00EF8BB9 8B95 54FDFFFF mov edx,ss:[ebp-2AC]
00EF8BBF 52 push edx
00EF8BC0 FF15 F471F000 call ds:[<&KERNEL32._lclose>] ; 关闭文件
00EF8BC6 EB 0A jmp short user_dll.00EF8BD2
00EF8BC8 C785 64FDFFFF 00000000 mov dword ptr ss:[ebp-29C],0 ;后面的函数不做解释了,只需知道解密后的
00EF8BD2 8B85 60FDFFFF mov eax,ss:[ebp-2A0] ;数据存放在ebp-2A0
00EF8BD8 0385 64FDFFFF add eax,ss:[ebp-29C]
00EF8BDE C600 00 mov byte ptr ds:[eax],0
00EF8BE1 8B4D 08 mov ecx,ss:[ebp+8]
00EF8BE4 8B95 60FDFFFF mov edx,ss:[ebp-2A0]
00EF8BEA 8911 mov ds:[ecx],edx
00EF8BEC 8B85 64FDFFFF mov eax,ss:[ebp-29C]
00EF8BF2 8B4D FC mov ecx,ss:[ebp-4]
00EF8BF5 E8 E8C30000 call user_dll.00F04FE2
00EF8BFA 8BE5 mov esp,ebp
00EF8BFC 5D pop ebp
00EF8BFD C3 retn
--------------------------------------------------------------------------------------------------------
15、为了得到解密后的数据,跟进00EF8BA8处的call <jmp.&HLK_dll.#12_hlk_Crypt>,看看到底是什么算法。可是乐观的情绪又受打击,该函数有大量的花指令,菜鸟阶段,不懂如何去除花指令,研究肯定不是一天两天的事。所以不能在一棵树上吊死,换个思维,为什么不能用程序本身的代码进行解密呢!!!
对,就让程序自身帮我们干活!说干就干,在步骤13的00EF723F处设断,反复运行程序,每执行一次查看ebp-2A0处的值,并mp出来,另存为16进制文件,这些文件就是解密过的文件,将其覆盖原来的加密文件。剩下要做的就是跳过上面代码中的解密模块(_hlk_Crypt)。
这个很简单,来到00EF8B8E 处,即程序刚进行完_hread之后,将该处的代码cmp eax,ss:[ebp-2B0]改为jmp 00EF8BB9然后汇编。由于_hread函数和_hlk_Crypt函数用的是同一个缓冲区,所以_hread函数执行完毕后,ebp-2A0处的已解密数据就可顺利为后续程序使用了。
16、经过上面修改后,F9,程序顺利启动!!!!

【继续完善】
17、程序运行一段时间后,弹出对话框,通知确定狗的存在!!看来程序启动中还是要定时检查的。
第一个念头:查找SetTimer函数,果然找到,且只有一次调用,心想就是这个函数在作怪了,该函数的uElapsed值为1秒,我将其该为9A7EC800,即30天。运行,可是仍然定时检查狗的存在
第二个念头:查找其他有关时间的函数,但感觉有点费劲,进而转第三个念头
第三个念头:以其他的函数设断点,如大家常用的CreateFile、DeviceIoControl等,但没用过,感觉肯定不是跟踪一两句代码就可搞定的事情,进而转第四个念头
第四个念头:一劳永逸的想法,从源头解决问题。为什么不直接修改读狗函数的返回值?这样程序无论何时检查狗都无所谓。
重新跟进hlk_LogIn、hlk_Avail、hlk_ReadDong三个函数,发现这三个函数返回前都有共同的代码:
--------------------------------------------------------------------------------------------------------
00B5126C 837D FC 00 cmp dword ptr ss:[ebp-4],0 ;看ebp-4是否为0
00B51270 0F94C0 sete al ;是,则eax=1,有狗
00B51273 8B4D F4 mov ecx,ss:[ebp-C]
00B51276 E8 C6640400 call HLK_dll.00B97741 ;该CALL并不是真正函数,经验证不影响上面的EAX值
00B5127B 8BE5 mov esp,ebp
00B5127D 5D pop ebp
00B5127E C2 0C00 retn 0C
-----------------------------------------------------------------------------------------------------
不插狗的情况下[ebp-4] = 9,因此eax = 0,无狗,因此只需将 sete al改为 setne al,汇编,即可。
至此,打狗结束,程序非常正常。将修改后的文件另存到可执行文件,做为补丁,覆盖原文件,狗解除。

❸ 加密狗是什么,它有什么作用,和优盘作用一样么

加密狗是外形酷似u盘的一种硬件设备,正名加密锁,后来发展成如今的一个软件保护的通俗行业名词,"加密狗"是一种插在计算机并行口上的软硬件结合的加密产品(新型加密狗也有usb口的)。一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的狗内部还包含了单片机。软件开发者可以通过接口函数和软件狗进行数据交换(即对软件狗进行读写),来检查软件狗是否插在接口上;或者直接用软件狗附带的工具加密自己exe文件(俗称"包壳")。这样,软件开发者可以在软件中设置多处软件锁,利用软件狗做为钥匙来打开这些锁;如果没插软件狗或软件狗不对应,软件将不能正常执行。
加密狗通过在软件执行过程中和加密狗交换数据来实现加密的.加密狗内置单片机电路(也称cpu),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密狗.加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。同时,加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数,如dogconvert(1)=12345、dogconvert(a)=43565。
加密狗是为软件开发商提供的一种智能型的软件保护工具,它包含一个安装在计算机并行口或
usb
口上的硬件,及一套适用于各种语言的接口软件和工具软件。加密狗基于硬件保护技术,其目的是通过对软件与数据的保护防止知识产权被非法使用。

❹ 问一个有关软件加密狗的问题

我们公司前两天刚刚出现了一个问题:
有一台的加密狗被人给顺手拿走了, 没办法所以将另外一台机器的加密狗拿过来直接插上去,就可以用了。
所以如果您的两台电脑程序是一起买的,厂家说是一样的应该可以用程序覆盖, 如果不行,那一台的整套软件就废了,记住加密狗是不能复制的,厂家也没办法做到, 网上说的可以复制等都是忽悠人的。

加密狗是外形酷似U盘的一种硬件设备,正名加密锁,后来发展成如今的一个软件保护的通俗行业名词,"加密狗"是一种插在计算机并行口上的软硬件结合的加密产品(新型加密狗也有usb口的)。一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的狗内部还包含了单片机。软件开发者可以通过接口函数和软件狗进行数据交换(即对软件狗进行读写),来检查软件狗是否插在接口上;或者直接用软件狗附带的工具加密自己EXE文件(俗称"包壳")。这样,软件开发者可以在软件中设置多处软件锁,利用软件狗做为钥匙来打开这些锁;如果没插软件狗或软件狗不对应,软件将不能正常执行。 加密狗通过在软件执行过程中和加密狗交换数据来实现加密的.加密狗内置单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密狗.加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。同时,加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数,如DogConvert(1)=12345、DogConvert(A)=43565。 加密狗是为软件开发商提供的一种智能型的软件保护工具,它包含一个安装在计算机并行口或 USB 口上的硬件,及一套适用于各种语言的接口软件和工具软件。加密狗基于硬件保护技术,其目的是通过对软件与数据的保护防止知识产权被非法使用。

❺ C# 读取加密狗信息的问题

一般出厂的加密狗都是空狗,如果你需要进行读写操作,那么,需要先写入你需要的一些校验内容,如软件作者的电话号码等,然后在软件中进行读狗来校验狗内数据是否正确。(注:写狗操作不要放在代码中,那样就乌龙了)

❻ 加密狗主要有哪些不同种类

加密狗主要都是跟优盘差不多的设备,大部分为usb口,wibu也有sd卡和cf卡,主板usb扩展口等接口的加密狗,用来防止软件盗版。

❼ 同望加密狗问题

首先判断加密狗是否与软件相对应的,然后重新更新一下最新的加密狗驱动。。你的机器无法识别加密狗而别的机器能识别,证明狗是完好的,很大程度上在于你的机器还没有相应的驱动信息,重新更新一下加密狗的驱动,就可以解决啦~如有问题,可联系0571-88821285 QQ:1069665028 提供加密狗以及信息安全解决方案,杭州旺财信息技术有限公司尽可能的帮助你。

阅读全文

与加密狗的fb1相关的资料

热点内容
半圆形计算法 浏览:388
手机建立文件夹用什么软件 浏览:730
oss压缩上传 浏览:980
蓝色学校网站源码 浏览:827
androidgridview表格 浏览:604
压缩怎么eq闪 浏览:740
流密码算法openssl 浏览:262
怎么数黄豆个数python 浏览:799
混沌序列加密的结论 浏览:224
最新脱单app哪个好 浏览:638
如何用自己电脑做服务器做网页 浏览:140
服务器安全配置要考什么证书 浏览:633
ipadpro可以编程 浏览:541
外国的程序员和中国的程序员 浏览:151
抖音小店app如何联系客服 浏览:976
linux打开多个终端 浏览:500
linux中的命令 浏览:581
优化小米6相机算法 浏览:260
ak47pdf 浏览:150
人与文化pdf 浏览:642