MASM32中如何正确的使用aplib

BLACKWIM 2008-04-04 06:37:38
看雪出的软件加密技术内幕中有一个MASM32写的壳。我拿代码编译了一下,可是aplib怎么使用都不对。无奈,只好向各位大虾请教了。


代码的一开始包含了头文件和lib。
include \masm32\include\aplib.inc
includelib \masm32\lib\aplib.lib

里面使用了aP_pack这个函数。

于是我下载了aplib(http://www.ibsensoftware.com/),然后将aplib036.zip\examples\masm32\aplib.inc拷贝到\masm32\include\中,再拷贝了aplib036.zip\lib\dll\aplib.lib到\masm32\lib\中,可是编译的时候,提示错误:error LNK2001: unresolved external symbol _aP_pack

然后我换了一下,将aplib036.zip\lib\vc\aplib.lib拷贝到\masm32\lib\中,成功编译了。可是查看导入表,竟然没有aplib.dll的函数导入。运行的时候程序也不正常。

查看了书中提供的编译好的程序,导入表中有_ap_pack@20这个函数。

我的俩问题。
1,为什么我编译的程序的导入表里没有aP_pack?我应该怎么使用aplib?
2,为什么书中提供的程序的导入表中是_ap_pack@20这个函数?


另外:MASM32的例子中也有一个使用aplib的程序,但是我编译了一下,导入表中也是没有那个函数的。奇怪。
附:aplib036.zip :http://www.bitscn.net/UploadFiles/2008-4/41835439707.zip
那个壳的代码:http://www.bitscn.net/UploadFiles/2008-4/41836173756.zip
...全文
262 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengkesong 2008-11-14
  • 打赏
  • 举报
回复
偶也遇到这个问题啦
BLACKWIM 2008-04-05
  • 打赏
  • 举报
回复
附:aplib036.zip :http://www.bitscn.net/UploadFiles/2008-4/41835439707.zip
那个壳的代码:http://www.bitscn.net/UploadFiles/2008-4/41836173756.zip

麻烦大虾帮忙看下吧。晕,我到底哪搞错了呢?
BLACKWIM 2008-04-05
  • 打赏
  • 举报
回复
.model也是光盘中的,我没有修改。

.586
.model flat,stdcall
option casemap:none
assume fs:flat
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\comctl32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\gdi32.inc
include \masm32\include\shell32.inc
include \masm32\include\aplib.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\comctl32.lib
includelib \masm32\lib\comdlg32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\aplib.lib
BLACKWIM 2008-04-05
  • 打赏
  • 举报
回复
inc文件是从aplib036.zip的例子中拷贝出来的,内容如下:
;;
;; aPLib compression library - the smaller the better :)
;;
;; MASM32 include file
;;

aP_pack proto c, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
aP_workmem_size proto c, :DWORD
aP_max_packed_size proto c, :DWORD
aP_depack_asm proto c, :DWORD, :DWORD
aP_depack_asm_fast proto c, :DWORD, :DWORD
aP_crc32 proto c, :DWORD, :DWORD

aPsafe_pack proto c, :DWORD, :DWORD, :DWORD, :DWORD, :DWORD
aPsafe_check proto c, :DWORD
aPsafe_get_orig_size proto c, :DWORD
aPsafe_depack_asm proto c, :DWORD, :DWORD
aPsafe_depack_asm_fast proto c, :DWORD, :DWORD
cnzdgs 2008-04-05
  • 打赏
  • 举报
回复
它的哪个库做成了两种形式,提供了两种lib文件,类似于MFC,一种是在lib种实现功能,另一种是在lib中调dll来实现功能。
BLACKWIM 2008-04-05
  • 打赏
  • 举报
回复
为什么那个光盘自带的编译好的程序是需要dll的呢?
奇怪。

呵呵,谢谢大虾了。
cnzdgs 2008-04-05
  • 打赏
  • 举报
回复
看了一个这个包,里面很乱。你要用的是这两个文件:
examples\masm32\aplib.inc
lib\vc\aplib.lib
这个包给MASM提供的是静态库,不需要dll,类似于MFC的静态连接。
另外你执行不正常可能是调用aP_pack函数的参数和回调函数有问题,可以自己调试一下。
cnzdgs 2008-04-04
  • 打赏
  • 举报
回复
_ap_pack@20相当于
ap_pack PROTO C, DWORD, DWORD, DWORD, DWORD, DWORD
这样的函数原形。

另外你的.MODEL是怎么写的?
cnzdgs 2008-04-04
  • 打赏
  • 举报
回复
_ap_pack@20是编译后生成的函数名。
你在INC文件中找出aP_pack的声明贴出来。
BLACKWIM 2008-04-04
  • 打赏
  • 举报
回复
汗,帖子里写错了。不是下载的aplib,是从书的光盘里拷贝的。

21,470

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧