找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5913|回复: 3

ASM像VB一样调用C库函数

[复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-11-28 00:34:00 | 显示全部楼层 |阅读模式
LoadLibrary + GetProcAddress。
======
IncludeLib User32.Lib
IncludeLib Kernel32.Lib
EXTERN LoadLibraryA:PROC
EXTERN GetProcAddress:PROC
EXTERN ExitProcess:PROC
EXTERN MessageBoxA:PROC

.DATA?
    hMod    dq 0
    pApi    dq 0
    RetTxt  db 256    dup(?) ;字节数组
   
.DATA
    szTit    BYTE  "Address Of [msvcrt!_i64toa]",0
    szDll    BYTE  "msvcrt.dll",0
    szFun    BYTE  "_i64toa",0
   
.CODE
    Entry PROC
        ;hMod=LoadLibraryA("msvcrt.dll")
        sub rsp,16
        lea rcx,szDll
        call LoadLibraryA
        mov hMod,rax
        add rsp,16
        ;pApi=GetProcAddress(hMod,"_i64toa")
        sub rsp,24
        mov rcx,hMod
        lea rdx,szFun
        call GetProcAddress
        mov pApi,rax
        add rsp,24
        ;_i64toa(pApi,RetTxt,16)
        sub rsp,32
        mov rcx,pApi
        lea rdx,RetTxt
        mov r8,16
        call pApi
        add rsp,32
        ;MessageBoxA(0,RetTxt,szTit,0)
        sub rsp,28H
        mov rcx,0
        lea rdx,RetTxt
        lea r8,szTit
        mov r9,0
        call MessageBoxA
        add rsp,28H
        ;ExitProcess(0)
        sub rsp,8
        mov rcx,0
        call ExitProcess
        add rsp,8
        ret
    Entry ENDP
END

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2010-11-28 00:36:26 | 显示全部楼层
函数名称采用stud_PE获得,代码使用“老罗代码高亮工具”x64版染色。

7

主题

414

回帖

1

精华

铂金会员

积分
2173
发表于 2013-4-11 10:53:37 | 显示全部楼层
能力太差,不太能懂

30

主题

693

回帖

0

精华

钻石会员

积分
2815
发表于 2015-3-30 12:38:52 | 显示全部楼层
代码加色太美了
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表