精易论坛

标题: 尝试从GO编译C静态库,编译Sunny中间件支持库 [打印本页]

作者: 850536360    时间: 2022-7-10 23:08
标题: 尝试从GO编译C静态库,编译Sunny中间件支持库
本帖最后由 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的抓包工具:


upx压缩后的抓包工具文件尺寸大小:


抓包工具运行效果



作者: 菜就多多练    时间: 2022-7-11 08:46
这样也太强了吧
作者: mooo    时间: 2022-7-11 09:56
谢谢大佬分享
作者: OUYB    时间: 2022-7-11 10:13
会多一门语言就是好
作者: mooo    时间: 2022-7-13 21:13
太牛了。。。。。
作者: liuxin5163    时间: 2022-7-23 13:44
好像是不支持黑月的
作者: 850536360    时间: 2022-7-23 14:42
liuxin5163 发表于 2022-7-23 13:44
好像是不支持黑月的

编译提示什么错误?
作者: aadada    时间: 2022-10-5 23:56
这个就是驱动可以换成网卡方式,然后用虚拟网卡d理方式进行抓包 这样就完美了
作者: 完玩    时间: 2023-5-29 14:44
支持 好帖子 !
作者: 123137512    时间: 2023-5-31 23:11
占个位 好东西
作者: 精国软件    时间: 2024-5-15 16:43
这样也太强了吧,能出个视频嘛,更详细的教程,这样易语言添砖加瓦,用go给易语言实现更过的功能
作者: 精国软件    时间: 2024-5-15 16:54
https://gitee.com/ouyang-yiluo/epl_lib_sunny_mitm 链接打不开了呀
作者: 850536360    时间: 2024-5-18 04:11
精国软件 发表于 2024-5-15 16:54
https://gitee.com/ouyang-yiluo/epl_lib_sunny_mitm 链接打不开了呀

暂时恢复了
作者: 850536360    时间: 2024-5-18 04:15
精国软件 发表于 2024-5-15 16:43
这样也太强了吧,能出个视频嘛,更详细的教程,这样易语言添砖加瓦,用go给易语言实现更过的功能 ...

这个只是玩具,不建议跨编译器,会有很多问题
作者: zaochen0391    时间: 2024-10-9 15:38
不行了
啊啊
作者: renzhanxin    时间: 2024-11-18 15:05
不错的。感谢分享。。
作者: hutao1    时间: 2025-5-1 02:53
连接又失效了,麻烦大佬能再发一下吗




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4