专业加密狗技术网 加密狗破解 SENSE4加密狗破解之基础篇

SENSE4加密狗破解之基础篇

SENSE4加密狗,网上的资料现在也算比较全了,我也来简单的说说破解思路,   …

SENSE4加密狗,网上的资料现在也算比较全了,我也来简单的说说破解思路,     
 
SENSEIV狗通常的调用方式如下:

1、枚举设备,分配空间
2、再次枚举设备,连接设备
3、获取设备信息
4、更改目录,校验用户pin码,执行锁内程序得到返回值
下面具体的来说说各个步骤。
 
      第一步: 
      DWORD WINAPI S4Enum
      (
          OUT     SENSE4_CONTEXT   *pS4CtxList,
          IN OUT  DWORD            *pdwCtxListSize
       );
     
      枚举系统连接了多少个设备,这一步不用判断返回值,第一个参数输入NULL如果得到的设备上下文内存数量为0
      或者不为sizeof(SENSE4_CONTEXT)的倍数,说明没有找到设备或者列举设备出错。根据返回的设备个数,分配
      空间给程序使用
 
      s4CtxList = (SENSE4_CONTEXT *)malloc(dwSize);
   
 
      s4CtxList结构如下:
      typedef struct
      {
          DWORD                   dwIndex;                                        /** device index; index begins at zero*/
          DWORD                   dwVersion;                                      /** device version*/
          S4HANDLE                hLock;                                          /** device handle*/
          BYTE                    reserve[12];                                    /** reserved*/
          BYTE                    bAtr[MAX_ATR_LEN];                              /** ATR*/
          BYTE                    bID[MAX_ID_LEN];                                /** device ID*/
          DWORD                   dwAtrLen;                                       /** ATR length*/
      }SENSE4_CONTEXT,*PSENSE4_CONTEXT;
     
      第二步:     
      //根据分配的空间,再次枚举设备,这次要判断函数返回值。
 
      S4Enum(s4CtxList,&dwSize)
      S4OpenEx(&s4CtxList[0], &S4_OpenInfo)
      S4_OpenInfo结构如下:
      typedef struct _S4OPENINFO
      {
          DWORD dwS4OpenInfoSize;                                                 /* size of the structure*/
          DWORD dwShareMode;                                                      /* share mode*/
      } S4OPENINFO;
 
     第三步:
 
     DWORD WINAPI S4Control
    (
          IN      SENSE4_CONTEXT    *pS4Ctx,
          IN      DWORD             dwCtlCode,
          IN      VOID              *pInBuffer,
          IN      DWORD             dwInBufferLen,
          OUT     VOID              *pOutBuffer,
          IN      DWORD             dwOutBufferLen,
          OUT     DWORD             *pdwBytesReturned
    );     
 
      #define S4_LED_UP                               0x00000004      /** LED up*/
      #define S4_LED_DOWN                             0x00000008      /** LED down*/
      #define S4_LED_WINK                             0x00000028      /** LED wink*/
      #define S4_GET_DEVICE_TYPE                      0x00000025      /** get the device type*/
      #define S4_GET_SERIAL_NUMBER                    0X00000026      /** get the device serial number*/
      #define S4_GET_VM_TYPE                          0X00000027      /** get the virtual machine type*/
      #define S4_GET_DEVICE_USABLE_SPACE              0x00000029      /** get the total space of the device*/
      #define S4_SET_DEVICE_ID                        0x0000002a      /** set the device ID*/
      #define S4_RESET_DEVICE                         0x00000002      /** reset the device*/
      #define S4_DF_AVAILABLE_SPACE                   0x00000031      /** get the free space of current directory*/
      #define S4_EF_INFO                              0x00000032      /** get specified file information in current directory*/
      #define S4_SET_USB_MODE                         0x00000041      /** set the device as a normal usb device*/
      #define S4_SET_HID_MODE                         0x00000042      /** set the device as a HID device*/
      #define S4_GET_CUSTOMER_NAME                    0x0000002b      /** get the customer number*/
      #define S4_GET_MANUFACTURE_DATE                 0x0000002c      /** get the manufacture date of the device*/
      #define S4_GET_CURRENT_TIME                     0x0000002d      /** get the current time of the clock device*/
 
      第四步: 
      DWORD WINAPI S4ChangeDir
      (
          IN      SENSE4_CONTEXT     *pS4Ctx,
          IN      LPCSTR             lpszPath
      );
 
 
      DWORD WINAPI S4VerifyPin
      (
          IN      SENSE4_CONTEXT     *pS4Ctx,
          IN      BYTE               *pbPin,
          IN      DWORD              dwPinLen,
          IN      DWORD              dwPinType
      );
 
      DWORD WINAPI S4ExecuteEx
     (
          IN      SENSE4_CONTEXT     *pS4Ctx,
          IN      LPCSTR             lpszFileID,
          IN      DWORD              dwFlag,
          IN      VOID               *pInBuffer,
          IN      DWORD              dwInbufferSize,
          OUT     VOID               *pOutBuffer,
          IN      DWORD              dwOutBufferSize,
          OUT     DWORD              *pdwBytesReturned
      );
 
     最后处理返回值,关闭设备:
 
      DWORD WINAPI S4Close
      (
          IN      SENSE4_CONTEXT    *pS4Ctx
      );
 
 关于SENSE4的破解思路就暂时写到这,写得不好的请不要扔石头,欢迎大家交流。
 

以后还会有几篇实战的例子,到时候会详细的分析具体的加密方法和处理过程。

本文来自网络,不代表专业加密狗技术网立场,转载请注明出处:http://www.od168.com/crack/3.html

作者: admin

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: gzbiao@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部