吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 19919|回复: 18
收起左侧

[其他转载] C语言写驱动实现,E语言写界面 及 易语言报毒解决

  [复制链接]
zylc369 发表于 2011-12-27 09:48
本帖最后由 zylc369 于 2012-1-1 17:46 编辑

写程序过驱动保护的时候,难免要写一个应用程序的界面,要是用MFC写,那就太累了。
所以可以用C语言写驱动实现,E语言写界面,大致步骤如下:
1. 用VC把驱动写出来。
2. 写一个程序可以调用驱动,并封装成DLL。
3. 用易语言调用DLL。

初次用这种方法写程序的步骤:
1. 将写好的驱动程序在虚拟机测试,看有无问题
2. 在VC中建一个控制台程序,检测写出的调用方法是否可用(不一定要调用DLL,可以把DLL中的方法直接复制过来,因为调用DLL也挺麻烦的)。
3. 前两步成功后,再在易语言中测试。
熟练后,第二步可省。

细节注意:
1. 如果你使用的是Unicode字符集(即wchar_t类型)编写DLL,那么因为E语言的字符串默认是多字节字符集(即char类型)的,如果你要向DLL中传递字符串,字符串不转换的话,那么调用函数就不会得到想要的结果。
解决办法:转换。E语言有很多模块提供了从是多字节字符集到Unicode字符集的转换功能,从网上下载一个即可。

2. 如果不想让别人看见你的DLL,可以用MoleBox Pro这个软件,将你的EXE和DLL一起封装起来变成一个文件。经亲测调用DLL中的函数没问题。驱动封装以后调用不了驱动。

3. DLL中的方法必须是__stdcall的调用约定。

4. 不要在方法那里直接写__stdcall,这样的话如果你的C语言要调用你这个DLL就要出问题,因为C语言是__cdecl的调用约定(调用约定之间的区别,我没记错的话《INTEL汇编语言程序设计第5版》这本书里面有讲到,要不就是《琢石成器:Windows环境下32位汇编语言程序设计(第3版)》)。
解决办法:定义一个宏,#define __WINCALL__ __stdcall,把这个宏放在函数写调用约定的地方,如果C语言要调用这个DLL的话,直接把宏改成#define __WINCALL__ __cdecl,就行了,如果不这样做,那你就一个一个的改吧!

为什么不用VB:
我看过《Windows程序设计》这本书,书中讲到win 2000以后的系统,如果用xxxxxxA这样的函数,那么在底层经过转换后都会调用xxxxxxW这样的函数,例如:MessageA会调用MessageW这个函数,而这样就会有一个效率问题。虽然现在大家电脑都快了,而且咱们写的程序都不大,根本应该是感觉不到有什么区别的,但是我有效率癖,所以写VC程序的时候用的是xxxxxxW这样的函数(当然都是用宏调用的,如Message,但是你指定的是Unicode字符集的话底层就调用MessageW函数了),这样就必须使用Unicode字符集。
VB我只是偶尔偶尔的写写,而VB的字符串是多字节字符集的,所以我用的时候就必须把字符串转换成Unicode字符集,其转换之麻烦繁琐,实在都是血泪史啊,而且用VB写程序,很有肯能别的没有安装VB的电脑上根本用不了,关键是看你用什么控件了。比如,你用选择文件的控件,那么你要同时打包这个控件相应的.ocx文件,实在麻烦。
而易语言就不同,虽然易语言的字符串也是多字节字符集,但是很多易语言模块就提供多字节字符集和Unicode字符集的互相转换,方便。
易语言是用VC的链接器编译的,我猜测易语言写出的程序在底层其实都转换成了C/C++,然后用VC链接器进行链接,要不用VC的连接器干什么?不是一家人,不走一个门。
那么这就好说了,VC的程序进行“静态”编译,注意必须是静态,就可以在任何windows操作系统上运行,那么易语言也应该一样,经测试,的确如此。

我看有朋友说,易语言报毒,可以从网上下载一个
易语言特征码免杀UPX加壳VC连接器切换多功能插件.7z
用这个插件加上UPX壳后,就不报毒

这些细节是我熬了两次夜试验出来的结果,希望各位给个掌声吧~!

免费评分

参与人数 1热心值 +1 收起 理由
tk86935367 + 1 看了你的视频,觉得不错。

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

chornam 发表于 2014-12-24 21:25
论坛里“内核编程”相关的帖子太少了,不过这方面的知识相对高端许多,入门尚且不容易,要达到登堂入室的境界就更难了。
jemmy8288 发表于 2011-12-27 09:54
头像被屏蔽
firework 发表于 2011-12-27 11:03
fzxy 发表于 2011-12-27 11:19
E语言问题很多啊,经常报毒。。界面应该不会很复杂来着,用DELPHI或者VB感觉比E语言更合适些
 楼主| zylc369 发表于 2011-12-27 11:25
本帖最后由 zylc369 于 2011-12-27 11:38 编辑

回复 fzxy 的帖子

上网搜一个
易语言特征码免杀UPX加壳VC连接器切换多功能插件.7z
用这个插件加上UPX壳后,就不报毒了

易语言现在用好处是有大量的免费模块和控件可以用,而且不用把这些模块和控件一起打包发布,原因就是因为静态编译。
cjcn 发表于 2011-12-29 22:56
还行~!!!
有蛋要扯 发表于 2012-5-13 17:20
支持楼主分享经验........
ldyai123 发表于 2012-5-17 16:27
{:1_912:}看起来很不错,
rake_yin 发表于 2012-5-17 16:33
不错的思路,可以一试
mfd5095 发表于 2012-7-19 10:39
不知你学的《Windows程序设计》是第几版的?我也想去学学你说的哪本书
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-25 23:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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