开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 11830|回复: 13
收起左侧

[技术专题] 尝试从GO编译C静态库,编译Sunny中间件支持库

[复制链接]
发表于 2022-7-10 23:08:52 | 显示全部楼层 |阅读模式   广西壮族自治区南宁市
本帖最后由 850536360 于 2022-7-10 23:27 编辑

尝试从GO编译C静态库,编译Sunny中间件支持库
接上一帖:尝试从GO编译C静态库,实现易语言静态编译调用GO库

准备工作:

  1. Sunny中间件源码:http://esunny.vip/ 或者 https://gitee.com/ouyang-yiluo/sunny-mitm
  2. Sunny中间件易语言模块源码: http://esunny.vip/
  3. Sunny抓包工具源码: http://esunny.vip/
  4. 中间件源码、中间件模块和抓包工具源码,要使用同一个版本,让其接口一致。
  5. 易语言中间支持库源码:https://gitee.com/ouyang-yiluo/epl_lib_sunny_mitm
  6. GO编译环境
  7. VC6编译环境
  8. 易语言

构建C静态库

  1. 下载Sunny中间件源码,在Sunny中间件源码目录新建 build_c_archive_x86.bat

    # build_c_archive_x86.bat
    set CGO_ENABLED=1
    set GOOS=windows
    set GOARCH=386
    set ProjectName=sunny_mitm
    set ProjectOutDir=%~dp0bin\windows\%ProjectName%\x86\
    set ProjectOutPath_Lib=%ProjectOutDir%%ProjectName%.a
    go build -buildmode=c-archive -ldflags "-s -w" -o "%ProjectOutPath_Lib%"
    pause

    gitee里的版本自带 build_c_archive_x86.bat

  2. 运行 build_c_archive_x86.bat批处理来构建C静态库。

构建易支持库

  1. 中间件源码目录\bin\windows  目录复制sunny_mitm文件夹到易库源码目录\3rdparty
  2. 打开中间件模块源码,复制DLL命令的源码文本,以此创建sunny_mitm_ec_dll_cmd_src.txt 文件。注意,VC6老旧,不支持UTF-8,编码要转为ANSI。
  3. 打开gen_h.e, 运行以此生成 gen.h·文件。

    如果遇到生成暂停,看下面的错误处理1。

  4. 运行build_Release.bat 或者打开sunny_mitm.dsw手动构建。可以从Release目录找到 sunny_mitm.fnesunny_mitm_static.lib
    #build_Release.bat
    #MSDEV.EXE路径改为自己安装路径
    set MSDev98="D:\Program Files (x86)\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE"
    call %MSDev98% sunny_mitm.dsw /MAKE "sunny_mitm - Win32 Release" /REBUILD
    call %MSDev98% sunny_mitm.dsw /MAKE "sunny_mitm_static - Win32 Release" /REBUILD
    pause
  5. 安装易库: sunny_mitm.fne复制到 易语言目录\libsunny_mitm_static.lib复制到 易语言目录\static_lib

改造中间件模块

  1. 屏蔽_启动子程序里面的Sunny.dll文件检测。
  2. 删除Sunny.dll相关的DLL命令
  3. 启用支持库,易语言IDE菜单栏->工具->支持库配置,选上sunny_mitm
  4. 易语言IDE不会自动转换,手动解决Dll命令名称未找到(前提是支持库有同名的命令):
    1. F5测试
    2. 全选代码
    3. 屏蔽代码
    4. 全选代码
    5. 解除屏蔽
    6. 如果个别不行,在命令后面回车,再删除回车。
    7. 回到1,直到F5成功。
  5. 编译出模块。
  6. 测试模块: 打开抓包工具源码,载入模块后, 编译抓包工具。

错误处理

  1. 中间件模块的DLL命令返回值类型与参数和GO导出的函数不匹配(已反馈过,但是没见作者修复)。可以修改GO源码,或者修改模块的DLL命令 。以下是修改模块:
    1. 文本形式打开 中间件源码目录\bin\windows\sunny_mitm\x86\sunny_mitm.h文件参照
    2. 比如 Sunny_KeysEmpty,返回值类型和参数都不对。
    3. 返回值类型,void 表示空类型,但是DLL命令填的是整数型。
    4. 参数数量也少了两个,经查看GO源码,这两个参数是没有使用的,DLL命令可以补上整数型参数,再传入0。
    5. Sunny存取键值表->清空()调用改为 Sunny_KeysEmpty (KeysHandle, 0, 0)
    6. 其他的也是一样处理,以此类推。



一些效果图

编译成功, 不用Sunny.dll的抓包工具:
QQ截图20220710211759.png

upx压缩后的抓包工具文件尺寸大小:
QQ截图20220710211837.png

抓包工具运行效果
QQ截图20220710231230.png

评分

参与人数 1好评 +1 精币 +3 收起 理由
Ls60 + 1 + 3 感谢分享,很给力!~

查看全部评分


 楼主| 发表于 2024-5-18 04:15:04 | 显示全部楼层   广西壮族自治区南宁市
精国软件 发表于 2024-5-15 16:43
这样也太强了吧,能出个视频嘛,更详细的教程,这样易语言添砖加瓦,用go给易语言实现更过的功能 ...

这个只是玩具,不建议跨编译器,会有很多问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-18 04:11:25 | 显示全部楼层   广西壮族自治区南宁市
精国软件 发表于 2024-5-15 16:54
https://gitee.com/ouyang-yiluo/epl_lib_sunny_mitm 链接打不开了呀

暂时恢复了
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 1 天

发表于 2024-5-15 16:54:43 | 显示全部楼层   四川省达州市
https://gitee.com/ouyang-yiluo/epl_lib_sunny_mitm 链接打不开了呀
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 1 天

发表于 2024-5-15 16:43:13 | 显示全部楼层   四川省达州市
这样也太强了吧,能出个视频嘛,更详细的教程,这样易语言添砖加瓦,用go给易语言实现更过的功能
回复 支持 反对

使用道具 举报

发表于 2023-5-31 23:11:06 | 显示全部楼层   黑龙江省大庆市
占个位 好东西
回复 支持 反对

使用道具 举报

发表于 2023-5-29 14:44:00 | 显示全部楼层   云南省昆明市
支持 好帖子 !
回复 支持 反对

使用道具 举报

发表于 2022-10-5 23:56:38 | 显示全部楼层   海南省海口市
这个就是驱动可以换成网卡方式,然后用虚拟网卡d理方式进行抓包 这样就完美了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-23 14:42:45 | 显示全部楼层   广西壮族自治区南宁市
liuxin5163 发表于 2022-7-23 13:44
好像是不支持黑月的

编译提示什么错误?
回复 支持 反对

使用道具 举报

发表于 2022-7-23 13:44:35 | 显示全部楼层   安徽省阜阳市
好像是不支持黑月的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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