首页
社区
课程
招聘
未解决 C++ DLL文件,没有lib。不知道这个函数该怎么传参? 50.00雪花
发表于: 2019-4-27 13:11 4536

未解决 C++ DLL文件,没有lib。不知道这个函数该怎么传参? 50.00雪花

2019-4-27 13:11
4536

我在写一个c#程序,想使用一个别人的C++ DLL文件,没有lib。不知道这个函数该怎么传参。
通过snowman反编译dll对应函数为:

/*
 * ?Run@Discourse@@BDJHABNHWOType@@IJPAX@Z1@Z
 * public: bool __thiscall Discourse::Run(void (__cdecl*)(enum Type,unsigned int,long,void *),void *)
 */
bool Run_Discourse_BDJHABNHWOType_CVQWX_CXAZ(void** ecx, void** a2, void** a3, void** a4) {

我的c#代码

        [DllImport("Discourse.dll",
            SetLastError = true,
            EntryPoint = "?Run@Discourse@@BDJHABNHWOType@@IJPAX@Z1@Z",
            CharSet = CharSet.Auto,
            CallingConvention = CallingConvention.ThisCall)]
        public static extern bool Run(IntPtr self, ?, ?, ?);

具体内容可见8楼附件,谢谢大家了


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-5-13 13:42 被mb_faankfff编辑 ,原因: 语法高亮
收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 110
活跃值: (527)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
这是一个thiscall的函数,你要先构造一个对象出来
2019-5-6 15:23
0
雪    币: 236
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
构造对象我可以google解决,主要这个传参属实不怎么怎么搞
2019-5-8 21:00
0
雪    币: 1641
活跃值: (3601)
能力值: (RANK:15 )
在线值:
发帖
回帖
粉丝
4
this给ecx,其他的按照stdcall传
2019-5-8 21:49
0
雪    币: 6124
活跃值: (4661)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
有没有调用这个dll的示例程序?如果是C#传参的话不需要自己给ecx赋值,只需要按照thiscall的调用约定,如果需要知道各个参数的含义,需要分析示例程序。
2019-5-8 22:11
0
雪    币: 3710
活跃值: (2669)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
6
mb_faankfff 构造对象我可以google解决,主要这个传参属实不怎么怎么搞
方便的话,把dll上传看一下
2019-5-9 23:05
0
雪    币: 106
活跃值: (574)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
用汇编调用不就可以了
2019-5-11 08:25
0
雪    币: 236
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8

具体第三方Dll和我写的C#封装都放到附件了

最后于 2019-5-28 11:17 被mb_faankfff编辑 ,原因:
2019-5-13 13:41
0
雪    币: 236
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
刘铠文 this给ecx,其他的按照stdcall传
内容可见8楼。谢谢了
2019-5-13 13:41
0
雪    币: 236
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
黑洛 有没有调用这个dll的示例程序?如果是C#传参的话不需要自己给ecx赋值,只需要按照thiscall的调用约定,如果需要知道各个参数的含义,需要分析示例程序。
内容可见8楼。谢谢了
2019-5-13 13:42
0
雪    币: 236
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
xtayaitak 用汇编调用不就可以了
内容可见8楼。谢谢了
2019-5-13 13:42
0
雪    币: 1266
活跃值: (1307)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
自己用C++写一个dll, 定义出这么一个类型,然后用你写的dll调用这个dll,再用C#调用你自己写的dll留下的导出函数(试试看)
最后于 2019-5-28 14:23 被cmputer编辑 ,原因:
2019-5-28 14:22
0
雪    币: 8764
活跃值: (5240)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
看不到你的附件呢?
2019-6-20 13:15
0
游客
登录 | 注册 方可回帖
返回
//