VB中如何与C程序接口?

BillShow 2000-03-16 11:00:00
各位大虾好,近日我用VB编写一个应用程序,里面要用到CRC校验,我有CRC校验的C源代码,但我不知道如何在VB中调用这段C程序.望不吝赐教!
...全文
167 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chen_Lin 2000-03-19
  • 打赏
  • 举报
回复
用VC6.0重新编译,作成DLL.ANSI C应该没有问题。
我的一个压缩算法就是这样作的。
fupf88 2000-03-18
  • 打赏
  • 举报
回复
CreateProcess and 进程通讯
chkys 2000-03-17
  • 打赏
  • 举报
回复
做个DLL
BillShow 2000-03-17
  • 打赏
  • 举报
回复
问题是用ANSI C怎样作个DLL呢?
VBKiller使用说明Killer是一个VB辅助逆向分析的工具。首先声明,它不能帮你把VB程序反编译到VB源代码,只能使得VB程序的反汇编看起来更接近VB代码。 配合IDA使用,可以建立VB程序几乎所有的类结构、方法表、函数体,并建立方法表结构体;可以识别VB程序引用的COM的CLSID,并使用ProgID命名;可以建立任意COM程序(非VB编译的也可以)的方法表、函数体,并建立方法表结构体,可以在待分析的VB程序使用这些结构体。经过这些处理,待分析的VB程序在IDA就形成了多个很规范类、方法,离逆向到源码已经不远了。 说用方法: 点击浏览按钮选一个COM程序,DLL或者Exe或者ocx,如果不是VB程序,要在“非VB程序”那里打勾,点击查看。左边的框框就列出了所选程序的所有COM接口,如果还要看类和枚举,可以选“显示接口以外的所有类”。点击任意一个接口,右边就显示了该接口的所有方法,在方法表地址、方法体的真实地址。如果要显示前面七个基本方法,则需要选“显示基本接口的方法”。如果是非VB程序,右边有映像基址和虚拟基址,映像基址就是程序的ImageBase,而虚拟基址就是分配到内存空间里面的起始地址,程序默认大概计算了这个地址,如果不正确,就需要手工修改,因为程序得到的方法表地址是运行空间里面的,必须知道这两个基址才能转成静态文件的地址,所以很重要,不能填写,否则就会识别错误。点击生成IDC,就可以生成当前选的接口所对应的IDC文件,类和枚举是不能生成IDC的,把这个IDC加载到IDA,就可以自动识别处理相应的方法地址了。点击全部生成,就可以生成所有接口的IDC文件(放到同一个文件里面)。选“生成结构体”,再使用两个生成按钮,就可以生成这个COM对应的结构体建立脚本,把这个结构体IDC载入IDA,就会在IDA生成一批对应的结构体,比如:分析的一个程序用到了数据库操作和加解密操作,一般要载入ADO和CAPICOM的结构体脚本。 VBKiller还有一个扫描识别COM的功能尚未完成。 同一个目录下,还有另外几个c文件。 其,header.c是上面的IDC文件所要包含的,这是公用函数文件; vb.c是网络上流传的那个vb.idc修改后的版本,没有改多少,感觉很多地方没有起作用。可以利用该脚本建立VB程序的类结构和事件表; vboop.c是专门辅助分析VB面向对象功能的脚本。 里面的Do_BasicOOP方法主要是根据vb.c建立好的事件表,处理对应的函数体,如果函数没有建立,则建立函数,并把该函数改名为与事件表的名字一致,同时建立每个类的方法表结构体,方面以后分析。 ParseAPI用于处理VB内部函数,它将扫描所有指定的函数的交叉引用,给该函数加上可重复注释,尝试识别参数,并给各个参数加上注释,如果参数是寄存器,则再往上寻找寄存器数据的来源,并加上注释。扫描的函数和注释是代码里面指定的,目前指定了大多数函数,大家可以根据自己需要加上新的函数。 ParseNew方法用于扫描所有的_vbaNew和_vbaNew2的交叉引用,并尝试识别相应的CLSID,如果能识别,则修改为相应的程序名,以方便查看。识别是内置实现的,目前内置的不多,大家可以根据需要添加自己的。扫描是,如果发现无法识别的CLSID,程序将会把该CLSID写入到同目录下的UnKnown.txt,分析一遍后可以去查看该文件,如果发现有未识别的CLSID,则到注册表搜索该CLSID,得到程序名后,在程序相应地方加上即可。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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