VS2010 如何调用 汇编写的dll库

Wesley13
• 阅读 518

首先是编辑dll库

汇编码:

;#########################################################################
;        Assembler directives

.486
.model flat,stdcall
option casemap:none

;#########################################################################
;        Include file

include AAA.inc

.const 
    szTitle     db    '爱静',0
.code

;#########################################################################
;        Common AddIn Procedures

DllEntry proc hInst, reason, reserved1    
    mov eax, 1
    ret
DllEntry Endp
; Export this proc (it is autoexported if MakeDef is enabled with option 2)
InstallDll proc uses ebx hWin:DWORD, fOpt:DWORD
    mov    eax, 1
    ret 

InstallDll Endp
; Export this proc (it is autoexported if MakeDef is enabled with option 2)
_adds    proc a,b
    lea    eax,szTitle
    ret
_adds    endp
;#########################################################################
End DllEntry

只定义了一个简单的函数 adds 接受2个参数返回一个字符串指针(指针内存的就是内存地址的位置而已) 关于这点可以看C++反汇编与逆向分析技术揭秘

def 文件

EXPORTS _adds

上面的步骤就是生成普通的dll库

接下来写C语言部分:

头文件中定义: 注意这部分只能在头文件中定义

#ifdef __cplusplus
extern "C" {
#endif
    char * __stdcall _adds(int i,int b);     
#ifdef __cplusplus
}
#endif

这里看到我们将 4字节的DWORD 当做int  和放在eax中的 "爱静" 字符串的首地址当做char*;这点不明白的可以看C++反汇编与逆向分析技术揭秘,

接下来就需要向项目中添加 刚才汇编生成的lib文件了  

VS2010 如何调用 汇编写的dll库

选择lib文件 ,让后就可以了..

当然要运行的程序下必须含有 DLL文件..看好了是汇编生成的DLL文件 而不是lib文件

文件结构如下

VS2010 如何调用 汇编写的dll库

VS 真是强大的编辑器= =window下最好的木有之一.

点赞
收藏
评论区
推荐文章
Aimerl0 Aimerl0
3年前
WPS2010版本DLL劫持漏洞复现(plgpf.dll)
WPSOfficeplgpf.dllDLL劫持漏洞原理简单说就是exe文件寻找DLL库会优先在当前目录下寻找,若DLL库未经过校验或者寻找DLL路径不是绝对路径,容易导致DLL被本地攻击者劫持漏洞描述CVE编号:CVE20105208WPSoffice套件应用程序在加载外部库(DLL)时通过了一个不合格
李志宽 李志宽
3年前
日子越来越有判头了?用DLL劫持,搞点事情!
0x01dll简介在Windows系统中,为了节省内存和实现代码重用,微软在Windows操作系统中实现了一种共享函数库的方式。这就是DLL(DynamicLinkLibrary),即动态链接库,这种库包含了可由多个程序同时使用的代码和数据。每个DLL都有一个入口函数(DLLMain),系统在特定环境下会调用DLLMain。在下面的事件发生时就会调用d
Wesley13 Wesley13
3年前
MFC DLL 导出函数的定义方式
一直在鼓捣DLL,每天的工作都是调试一个一个的DLL,往DLL里面添加自己的代码,但是对于DLL一直不太了解啊!今天一查资料,才发现自己对于DLL编写的一些基本知识也不了解。要学习,这篇文章先总结DLL的导出函数的方法。1.首先说一下如何建立一个普通的DLL工程!(以VS2008为例)NewProject  Win32标签
Wesley13 Wesley13
3年前
go 编写DLL
packagemianimport"C"//exportMinfuncMin(a,b)int32{ifab{returnint32(b)}returnint32(a)}  编译命令   
Wesley13 Wesley13
3年前
JNI使用方式
作用:使Java能够同C/C动态库(dll)进行交互。编写过程:    1、native接口类,其中方法用native修饰,没有方法体。    2、通过javah命令编译native接口类,会生成.h的头文件。    3、用C编写一个dll文件        (1)需要引入刚生成的.h头文件        (2)实现头文件
Wesley13 Wesley13
3年前
2014百度校园招聘软件研发类笔试(深圳)
时间:2013年9月28日。地点:深圳职位:软件研发问答题:(10\3)1.动态链接库(DLL)与静态链接库(lib)的优缺点:静态链接库和动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都全部被直接包含在最终的EXE文件中,若使用DLL,该DLL不必被包含在最终的EXE中,EXE文件
Stella981 Stella981
3年前
FastReport使用教程
FastReport使用心得一、准备  1、这次开发使用的是FastReport桌面版(FastReport.NetVersion201731.16Demo)  2、引用类库FastReport.dll、FastReport.Web.dll二、桌面版制作报表  1、添加数据源    Report
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
3年前
VC++ 函数指针实现被动传输数据
    在使用VS2010开发项目时,经常需要实现一些动态的DLL库的开发,其在开发过程中,需要dll能自动调用回调函数,实现数据传输。因此,在项目中,需要使用到函数的指针,函数的指针能很好的解决该问题。下面采用socket的通信为例。    在我们认知的socket的通信模型中,其采用cs经典模型,为了使我们的代码具有更好的可移植复用性,一般讲,s
Wesley13 Wesley13
3年前
thinkphp 基本配置
12returnarray(34//定义数据库连接信息5'DB\_TYPE''mysql',//指定数据库是mysql67'DB\_HOST''localhost',89'DB\_NAME''uchome',//数据库名1011'DB\_USER''root