圣天诺加密狗(HASP)破解

圣天诺加密狗(HASP)破解

一、编写测试程序

dll代码:

#include "pch.h"
#include<stdlib.h>
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        system("notepad.exe");
        break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

dll加载代码

#include <stdio.h>
#include <Windows.h>
int main()
{
	HANDLE hDll = LoadLibraryA("HaspTestDll.dll");
	if (hDll != NULL)
	{
		printf("Ok\n");
	}
	else 
	{
		printf("Error\n");
	}
	return 1;
}

使用狗对dll加密

加密后在有狗(软狗)环境运行如下,正常运行:

加密后在无狗(软狗)环境运行如下,提示错误:

二、调试dll

在loadlibrary处下断点,第一次停留在LoadLibraryA(“HaspTestDll.dll”);处。

加密的dll在解密时会调用两次LoadLibraryA, 所以断两次LoadLibraryA就可以看到关键函数
hasp_login_scope(hasp feature t feature id,const char* scope,hasp vendor code t vendor_code,hasp handie t* handle)
hasp_decrypt(hasp_handle_t handle,void* buffer,hasp_size_t length)

参考calc的调试过程,定位关键函数

hasptestdll.dll 加载基址 6FA00000
xxx1 地址 6FA1CF98
xxx1 offset hasp_login_scope :3123D
hasp_login_scope: 6FA4E1D5
hasp_decrypt: 6FA4E2BC


关键函数hasp_login_scope和hasp_decrypt。

有狗(软狗)的环境
hasp_login_scope函数会获取一个handle,并返回0。
hasp_decrypt函数会解密一段关键代码并存储到参数buf中

无狗的环境
hasp_login_scope函数获取handle失败,并返回一个fei0值。
hasp_decrypt函数解密失败。

调试测试可知,我们先在有狗的环境中,hook hasp_decrypt,将解密的关键数据保存下来,
然后在有狗的环境中
hook hasp_login_scope 函数,随便设置一个handle值,并返回0
hook hasp_decrypt 函数将解密后的内容,复制到对应的内存中,则可以绕过狗,成功运行我们的程序。

三、无狗执行

首先我们需要将编写的hook dll 静态注入的主程序中,使用工具CFFExplorerVII


保存文件(不要覆盖原文件)

无狗环境下运行原程序

无狗环境下运行patched 程序

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows Docker下使用圣天诺加密狗需要进行以下步骤: 1. 确认Docker是否已经安装,并且版本是18.09或更高版本。 2. 下载并安装圣天诺加密狗驱动程序,确保加密狗能够在Windows主机上正常工作。 3. 运行Docker镜像时,需要使用以下参数来启用访问Windows主机的权限: ``` docker run -it --rm --privileged --network host -v /:/host microsoft/windowsservercore ``` 4. 在Docker容器中,需要安装圣天诺加密狗驱动程序。可以在Dockerfile文件中添加以下命令: ``` RUN md C:\stn && \ COPY stnusb.sys C:\stn\ && \ COPY stnusbnt.inf C:\stn\ && \ COPY stnusbtn.cat C:\stn\ && \ regsvr32 /s C:\stn\stnusb.sys ``` 5. 在Docker容器中,需要安装圣天诺加密狗客户端程序。可以在Dockerfile文件中添加以下命令: ``` RUN md C:\stnclient && \ COPY stnclient.exe C:\stnclient\ ``` 6. 在Docker容器中,需要设置环境变量STNPATH,指向圣天诺加密狗客户端程序的安装目录。可以在Dockerfile文件中添加以下命令: ``` ENV STNPATH=C:\stnclient ``` 7. 在Docker容器中,需要启动圣天诺加密狗客户端程序,并连接加密狗。可以在Dockerfile文件中添加以下命令: ``` RUN start /wait C:\stnclient\stnclient.exe /s /a /c ``` 8. 在Docker容器中,可以使用圣天诺加密狗客户端程序进行加密狗操作。例如,可以在CMD窗口中运行以下命令,查看加密狗信息: ``` set STNPATH=C:\stnclient stnclient.exe /info ``` 以上是在Windows Docker下使用圣天诺加密狗的步骤,您可以根据自己的实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值