XP crack ,解决高版本VS编译程序不支持XP系统问题

;----------------------------------------------------------------------------------------------------------------------------
;     
;          XP crack ,解决高版本VS编译程序不支持XP系统问题
;
;       原理:当我们call EncodePointer 时,会生成call    dword ptr ds:__imp__DecodePointer@4
;             不过这个跳转是一个源地址寻址后跳转,也就是__imp__DecodePointer@4是一个DWORD而
;             不是proc,这样用C语言实现不了了,因此就用汇编写一个链接符号,通过这个链接符号
;             来给出跳转地址
;             所以要在data段中给出code段的地址
;
;----------------------------------------------------------------------------------------------------------------------------

.model flat
.data;--------------------------------------------------------------------------------Data段

__imp__EncodePointer@4                  dd EncodePointer_wrap
__imp__DecodePointer@4                  dd DecodePointer_wrap
__imp__GetLogicalProcessorInformation@8 dd GetLogicalProcessorInformation_wrap

EXTERNDEF __imp__EncodePointer@4                  :DWORD
EXTERNDEF __imp__DecodePointer@4                  :DWORD
EXTERNDEF __imp__GetLogicalProcessorInformation@8 :DWORD

crack_My_EncodePointer@4              proto c :dword
crack_My_DecodePointer@4              proto c :dword
SmartGetLogicalProcessorInformation@8 proto c :dword, :dword

.code;------------------------------------------------------------------------------Code段
dummy4 proc
	.SAFESEH dummy4
	mov eax, [esp + 4]
	ret 4
dummy4 endp

dummy8 proc
	.SAFESEH    dummy8
	mov eax, [esp + 4]
	ret 8
dummy8 endp

EncodePointer_wrap proc
	.SAFESEH EncodePointer_wrap
	jmp      crack_My_EncodePointer@4
EncodePointer_wrap endp

DecodePointer_wrap proc
	.SAFESEH DecodePointer_wrap
	jmp      crack_My_DecodePointer@4
DecodePointer_wrap endp

GetLogicalProcessorInformation_wrap proc
	.SAFESEH GetLogicalProcessorInformation_wrap
	jmp      SmartGetLogicalProcessorInformation@8
GetLogicalProcessorInformation_wrap endp

end;---------------------------------------------------------------------------------End

猜你喜欢

转载自blog.csdn.net/lif12345/article/details/79283053