吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 31192|回复: 5
收起左侧

[分享] 揭开加密狗模拟的神秘面纱之ET99

  [复制链接]
tzlaoliu 发表于 2009-7-9 10:27
大家好,自从前面发了  揭开加密狗模拟的神秘面纱系列的Rockey6的1,2,3和Rockey2的相关文章,很多朋友给予了热情的支持。
今天正好有点时间,整理了一下笔记,草草的出了篇  揭开加密狗模拟的神秘面纱之ET99。
破解笔记只是随笔的记录,本文或许有错误的地方,还望各位拍砖
拍砖方式 860132006@qq.com   或者 http://bbs.key123.net 提出您宝贵的意见

废话少说

ET99和前面两篇文章中提及的R6和R2均属飞天一家公司
ET99应该是R2的升级版本和即将推出的ET199篇文章介绍的ET199狗一样是为了冲击S系列的加密狗而推出的,这两款产品具有价格低廉,性能优良等特点,打的S狗**********(省略**字数)

因其提供了生成随机数和MD5效验功能,还加入了操作权限等特色功能,故在低端市场,这个狗非常让人喜欢
下面看看相关说明
再次声明:下面的部分内容摘抄自飞天官方的SDK内容,有朋友在前面说了,抄来的SDK谁不会啊
是的抄SDK谁都会,不过我要说的是我的文章只是思路而不是破解过程
想要看过程的,对不起,恕难提供,思路就是万能过程
任何一种狗的操作都是如下流程
找狗->打开狗->效验狗->操作够(读/写/运行)->关闭狗
先看下查找狗的操作
查找ET99需要使用函数
et_FindToken
看下函数定义
======================================================================
et_FindToken(
              unsigned char* pid,
              int * count
              )
功能说明:
    查找计算机上指定 pid 的 ET99 个数。
参数:
    pid:      [in]产品标识, 为固定长度 8 个字节的字符串;
    count: [out]还回的设备个数;
返回值:
    ET_SUCCESS:执行成功,Count 为查找到的 ET99 的数目。
    ET_UNIT_NOT_FOUND:没有可以用的硬件,此时 Count 值为 0。
====================================================================
由这个函数得知,找到狗返回0
那你写模拟的时候直接返回0就OK了
我就不写示例代码了,下面说到的东西也不再写代码
只说思路
找到锁当然要打开了,打开ET99使用函数et_OpenToken
看下函数定义
======================================================================
et_OpenToken(

              ET_HANDLE* hHandle,

              unsigned char*pid,

              int ind )

功能说明:
    打开指定 PID 的硬件,由 index 指定打开硬件的索引,index 应该小于等于找到
的 Token 数目。进入匿名用户状态。
参数:
    hHandle:[out]打开设备的句柄,返回给用户,供以后的函数调用;
    pid: [in]输入的硬件设备的 pid, 为固定长度 8 个字节的字符串;
    index:[in]打开第 index 个硬件设备。
返回值:
    ET_SUCCESS:执行成功。
    ET_UNIT_NOT_FOUND:打开指定的设备失败。
======================================================================
打开函数最重要的是PID的值,如果PID=0那么这只ET99就可以软复制了,因为不效验狗号
如果PID<>0那么最好的办法就是模拟了,当然现在又不少人手里有硬复制工具        也是可以的了

写程序返回0就是打开狗成功了
关闭锁这里就不说了
再来看度狗内数据的操作需要使用的函数et_Read
看下函数定义
======================================================================
et_Read(
         ET_HANDLE hHandle,
         WORD offset,
         int Len,
         unsigned char* pucReadBuf
         )
功能说明:
    从指定的位置,读取指定的数据到指定的 BUFFER 中。此函数调用需要有
User 权限,且调用以后不改变安全状态。
参数:
    hHandle:[in]设备句柄
    Offset: [in]偏移量
    Len: [in]长度,不能超过 60,如果超过则需要读多次。
    pucReadBuf: [out]读出的数据存放此缓存区中,调用者保证缓冲区大小至
少是 Len,否则可能产生系统存取异常。
返回值:
    ET_SUCCESS:表示成功。
    ET_INVALID_PARAMETER:无效的参数。
    ET_NOT_SET_PID:没有设置 PID。
    ET_ACCESS_DENY:权限不够。
=================================================================================
这个函数很重要,具有以下用途
1,读取事先定义好的数据
2,软件运行时需要带狗注册的,把注册信息写进狗存储区,然后软件再次读出效验注册授权
需要注意的是:如果你要写这个功能的模拟狗,那么你需要事先知道狗内的数据和对应的位置以及数据的长度
怎么得到狗内的数据呢,可以先不写模拟狗,只写个假的函数接口,监视到读狗的PID和PIN之后使用读狗程序读出需要的数据
或者使用DLL的api转向来实现数据偷取,我写了这个狗的数据偷取发在UnPack,需要的可以去看下,不过后来发现转向这个api经常会出问题
原因不明,想到了另外一个方法还没来得及试验
狗木马和官方读狗程序的改进版可在我的小站下载 bbs.key123.net
得到数据后就可以写模拟了
使用内存copy操作吧得到的数据写进内存缓冲区的相应位置
然后再给一个0的返回

读狗操作处理好之后有必要再看看写狗操作
虽然并不是所有软件有这个操作,以防万一还是看看吧
看下函数定义
======================================================================
et_Write(
         ET_HANDLE hHandle,
         WORD offset,
         int Len,
         unsigned char* pucWriteBuf
         )
功能说明:
    将 buf 中,Length 长的数据写到指定的偏移。有存取权限控制。匿名状态不
可用,且在普通用户状态时还需要检查设备的配置。不改变安全状态。
参数:
    hHandle:[in]设备句柄;
    Offset: [in]偏移;
    Len: [in]长度,不能超过 60,如果超过则需要写多次;
    pucWriteBuf: [in]等写入的数据缓存区指针;
返回值:
    ET_SUCCESS:表示成功。
    ET_HARD_ERROR:硬件错误
    ET_INVALID_PARAMETER:无效的参数。
    ET_NOT_SET_PID:没有设置 PID。
   ET_ACCESS_DENY:权限不够。
   ET_COMMUNICATIONS_ERROR:没有打开设备。
=======================================================================
如果软件需要带狗注册,那么应该是用到了写狗操作
把注册后的信息写入狗内
软件下次运行的时候读取注册信息以便效验注册授权,这个操作处理起来不是太难
思路是先监视软件写了什么,然后把监视到得数据放在read操作里面做相应处理即可,理论上这个操作只会在软件没有注册的时候会使用
软件注册之后在运行就直接效验注册信息,只有效验不正确才会再次使用写操作

产生随机数的功能我没有遇到过,故本文不做讨论

其他的比如产生产品标识 ,产生超级用户 PIN 码,重置普通用户 PIN 码等功能,你是不会在软件上看到的
这属于开发功能,如果你能搞到种子就可以硬复制了

下面看看比较有特色的功能
MD5效验
看下函数定义
======================================================================
MD5_HMAC(
             unsigned char * pucText,
             unsigned long ulText_Len,
             unsigned char * pucKey,
             unsigned long ulKey_Len,
             unsigned char * pucToenKey,
             unsigned char * pucDigest
             )
功能说明:
    标准 HMAC_MD5 的软件实现,参照 RFC2104 标准。可用于产生 TOKEN 硬
件需要的 KEY。产生的计算结果,可以与其它系统(如服务器端系统)进行对比,
以验证算法的正确性。匿名状态可用不改变安全状态。
参数:
    pucText:[in]等处理的数据缓存区指针,大于 0 小于等于 51 个字节
    ulText_Len :[in]数据长度,大于 0 小于等于 51
    pucKey:[in]密钥,按标准 RFC2104,长度可以任意
    ulKey_Len:[in]密钥长度
    pucToenKey:[out]硬件计算需要的 KEY,固定 32 字节。
    PucDigest:[out]计算结果,固定 16 字节。
返回值:
    ET_SUCCESS:表示成功。
    ET_INVALID_PARAMETER:无效的参数。
计算 HMAC_MD5
et_HMAC_MD5(
              ET_HANDLE hHandle,
              int keyID,
              int textLen,
              unsigned char* pucText,
              unsigned char *digest
              )
功能说明:
    利用硬件计算 HMAC-MD5 ,pid 为出厂时,还回错误。权限等同于 KEY 的
读权限。不改变安全状态。
参数:
    hHandle:[in]设备句柄
    keyID:[in]密钥指示,范围(1—8)
    pucText:[in]待计算的数据,大于 0 小于等于 51 个字节
    textLen:[in]数据长度,大于 0 小于等于 51
    digest:[out]散列结果的数据指针,固定长度 16 个字节。
返回值:
    ET_SUCCESS:表示成功;
    ET_NOT_SET_PID:没有设置 PID;
    ET_INVALID_PARAMETER:无效的参数;
    ET_COMMUNICATIONS_ERROR:没有打开设备。、
===========================================================================
这个东西不太好说,因为我目前还在试验阶段
HMAC_MD5是标准算法,我没有找到这个算法的实现类库,更没有找到Delphi版本的
不知哪位有这个算法的类库或者Delphi版本的代码能共享一下,不胜感激,如有通用DLL接口更好了

上面很大篇幅是摘抄自SDK内容,既是我亲自写出来还是这些东西,没有什么不同
不同的只是我手写的话会很累
到此全文完,里面尚有不少的错误或者漏掉的东西,还望朋友们斧正
拍砖方式 860132006@qq.com   或者 http://bbs.key123.net 提出您宝贵的意见
=============================The End======================================

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
chinasuns + 1 + 1 很有启发和值得学习的帖子

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kelb 发表于 2013-4-18 10:13
正在学习模拟,很好的帖子
lal978112 发表于 2009-7-15 11:09
谢谢楼主,按照你的文章,我也模拟出一个ET99的狗了,
不过楼主少说了一个函数的模拟就是
et_Verify(
ET_HANDLE hHandle,
int Flags,
unsigned char* pucPIN
)
功能说明:
验证密码,以获得相应的安全状态,不受安全状态限制,验证成功以后,进入相应的安全状态。
208055 发表于 2009-7-9 19:12
lal978112 发表于 2009-7-9 13:36
支持楼主!强啊
iy0507 发表于 2009-7-9 11:21
顶,支持继续发~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-10 05:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表