遭遇无法解析的外部符号encodepointer和decodepointer

window xp sp1 的kernel.dll没有encodepointer 和decodepointer,vs2010编译出来的exe和dll都带了encodepointer,decodepointer的,vs2010的自己的mfc的动态库(eg.  mfc100.dll等)里在调用kernel.dll时也使用了这两个函数


要摆脱encodepointer 和decodepointer
法1
xp升级到sp2及以上
法2
退回到vs2008及以前
法3
还是使用vs2010,选择所有工程和库选择“静态链接mfc”,这样摆脱掉mfc100.dll等库,但是如果是个dll或exe的工程,他自身还要调kernel.dll的encodepointer 和decodepointer,使用如下代码摆脱调他们
 

.model flat
.data
__imp__EncodePointer@4 dd dummy4
__imp__DecodePointer@4 dd dummy4
__imp__InterlockedPopEntrySList@4 dd dummy4
__imp__InterlockedPushEntrySList@8 dd dummy8
EXTERNDEF __imp__EncodePointer@4 : DWORD
EXTERNDEF __imp__DecodePointer@4 : DWORD
EXTERNDEF __imp__InterlockedPopEntrySList@4 : DWORD
EXTERNDEF __imp__InterlockedPushEntrySList@8 : DWORD
.code
dummy4 proc
mov eax, [esp+4]
ret 4
dummy4 endp
dummy8 proc
mov eax, [esp+4]
ret 8
dummy8 endp
end

将如上文本保存为crack.asm,有可能还有修改targetver.h里的版本号,但是我没有遇到,在vs的命令环境下ml -c crack.asm编译出来,当做库加入到你的工程,中这用就不会到kernel.dll中去找encodepointer 和decodepointer了,这里是一个编译好的目标文件,32位的,把它添加到你的工程中就可以了。

使用静态链接mfc易报库冲突的错,特别是libcmt.lib和msvrt.lib,这时可以选择忽略一个看看,一般不好使

,实在在不行就设置为“仅限多次定义的符号 (/FORCE:MULTIPLE)”,这样就把冲突当做警告了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值