如何使用dll进行验证注册加密狗的方式

分析某软件的注册验证, 发现它是通过调用一个dll来判断keyfile内容是否正确, 是否在使用期之内, 并且这个子程序作的很是复杂, 当然如果想找算法还是能找得到:) 如keyfile正确, 则返回eax=0, 并且内存某位置的8个字节应该为固定的一个值. 这样, 分析dll文件, 发现它仅有这一个导出的函数, 那么仿造这样一个dll是完全可行的。内容简单如下:

.386

.model flat,stdcall

option casemap:none

include \masm32\include\windows.inc

include \masm32\include\user32.inc

include \masm32\include\kernel32.inc

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

.data

.RADIX 16

SomeThing db 26, 1d, 28, 15, 34, 5d, 08, 4b, 10, 1b, 00

.code

.RADIX 16

DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD

mov eax,TRUE

ret

DllEntry Endp

;---------------------------------------------------------------------------------------------------

;反击1。

;----------------------------------------------------------------------------------------------------

XXXX proc

push ecx

push esi

push edi

mov edi, dword ptr [esp+14] ;待赋值内存位置

lea esi, SomeThing

push 0b

pop ecx

rep movsb

pop edi

pop esi

pop ecx

xor eax, eax ;正确的返回值

ret 0c ;入栈有三个参数,保持stack平衡

XXXX endp

End DllEntry

相关推荐

发表评论

您的电子邮箱地址不会被公开。

QQ点我咨询