精易论坛

标题: C转E 代码求助 [打印本页]

作者: ShenMir    时间: 2025-1-8 22:11
标题: C转E 代码求助
int main()
{
       
        HINSTANCE hDllInst = LoadLibrary(TEXT("CaptchaLibrary.dll"));

       
        if (hDllInst)

        {
                typedef int(WINAPI *MYFUNC1)();
                typedef const char* (WINAPI *MYFUNC2)(const char*);
                typedef const char* (WINAPI *MYFUNC3)(const char*);
                typedef void(WINAPI *MYFUNC4)();
                string res;
                const char* result;
                MYFUNC1 _InitSession = NULL;
                MYFUNC2 _PredictBase64 = NULL;
                MYFUNC3 _PredictFile = NULL;
                MYFUNC4 _FreeSession = NULL;
                _InitSession = (MYFUNC1)GetProcAddress(hDllInst, "InitSession");
                _PredictBase64 = (MYFUNC2)GetProcAddress(hDllInst, "PredictBase64");
                _PredictFile = (MYFUNC3)GetProcAddress(hDllInst, "PredictFile");
                _FreeSession = (MYFUNC4)GetProcAddress(hDllInst, "FreeSession");

                int code = _InitSession();

                const char* s = "此处省略base64编码的文本型字符串";
                const char* f = "./test.png";
                printf("predictBase64: %s\n", _PredictBase64(s));
                printf("predictFile: %s\n", _PredictFile(f));
                _FreeSession();

                FreeLibrary(hDllInst);

                return 0;
        }
       
}


作者: 尛龍科技    时间: 2025-1-8 22:11
因为没有CaptchaLibrary.dll
我只能把我理解的给你了
  
DLL命令名返回值类型公开备 注
LoadLibrary整数型 
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
LoadLibraryA
参数名类 型传址数组备 注
lpLibFileName文本型
DLL命令名返回值类型公开备 注
FreeLibrary整数型 
DLL库文件名:
kernel32.dll
在DLL库中对应命令名:
FreeLibrary
参数名类 型传址数组备 注
hLibModule整数型
DLL命令名返回值类型公开备 注
InitSession整数型 
DLL库文件名:
CaptchaLibrary.dll
在DLL库中对应命令名:
InitSession
参数名类 型传址数组备 注
DLL命令名返回值类型公开备 注
PredictFile文本型 
DLL库文件名:
CaptchaLibrary.dll
在DLL库中对应命令名:
PredictFile
参数名类 型传址数组备 注
filePath文本型
DLL命令名返回值类型公开备 注
PredictBase64文本型 
DLL库文件名:
CaptchaLibrary.dll
在DLL库中对应命令名:
PredictBase64
参数名类 型传址数组备 注
base64Str文本型
DLL命令名返回值类型公开备 注
FreeSession 
DLL库文件名:
CaptchaLibrary.dll
在DLL库中对应命令名:
FreeSession
参数名类 型传址数组备 注
handle整数型

  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
dll句柄整数型 
s文本型 
f文本型 
code整数型 
result文本型 
dll句柄 = LoadLibrary (“CaptchaLibrary.dll”)
如果真 (dll句柄 = 0)
信息框 (“DLL 加载失败”, 0, “错误”, )
code = InitSession ()
如果真 (code ≠ 0)
信息框 (“InitSession 失败,错误代码:”到文本 (code), 0, “错误”, )
s = “此处省略base64编码的文本型字符串”
f = “./test.png”
result = PredictBase64 (s)
信息框 (“predictBase64: ” + result, 0, “结果”, )
result = PredictFile (f)
信息框 (“predictFile: ” + result, 0, “结果”, )
FreeSession ()
FreeLibrary (dll句柄)


作者: 卿卿吖    时间: 2025-1-8 22:36
学习一下,好东西,感谢大佬的分享!
作者: 卿卿吖    时间: 2025-1-8 22:38
学习一下,好东西,感谢大佬的分享!
作者: opphk    时间: 2025-1-8 23:15
这应该是验证码识别你可以用论坛大佬开发的方便食用
作者: 孤神    时间: 2025-1-9 05:32
.版本 2
.支持库 spec

.子程序 _启动子程序, 整数型,, 请在本子程序中放置易程序入口代码

.局部变量 hDllInst, 整数型
.局部变量 _InitSession, 子程序指针
.局部变量 _PredictBase64, 子程序指针
.局部变量 _PredictFile, 子程序指针
.局部变量 _FreeSession, 子程序指针
.局部变量 code, 整数型
.局部变量 s, 文本型
.局部变量 f, 文本型

hDllInst = 加载库 (“CaptchaLibrary.dll”)
.如果真 (hDllInst ≠ 0)
    _InitSession = 获取Proc地址 (hDllInst, “InitSession”)
    _PredictBase64 = 获取Proc地址 (hDllInst, “PredictBase64”)
    _PredictFile = 获取Proc地址 (hDllInst, “PredictFile”)
    _FreeSession = 获取Proc地址 (hDllInst, “FreeSession”)

    code = 调用子程序 (_InitSession, )

    s = “此处省略base64编码的文本型字符串”
    调试输出 (_PredictBase64 (s))

    f = “./test.png”
    调试输出 (_PredictFile (f))

    调用子程序 (_FreeSession, )

    卸载库 (hDllInst)
.如果真结束
返回 0
作者: liwei321gogo    时间: 2025-1-9 08:17
  
子程序名返回值类型公开备 注
_启动子程序整数型 
.局部变量 hDllInst, 整数型
.局部变量 _InitSession, 子程序指针
.局部变量 _PredictBase64, 子程序指针
.局部变量 _PredictFile, 子程序指针
.局部变量 _FreeSession, 子程序指针
.局部变量 code, 整数型
.局部变量 base64Data, 文本型
.局部变量 filePath, 文本型
.局部变量 resultBase64, 文本型
.局部变量 resultFile, 文本型
' 加载 DLL
hDllInst := 加载动态链接库 ("CaptchaLibrary.dll")
如果真 (hDllInst = 0)
输出调试文本 ("Failed to load CaptchaLibrary.dll!")
返回 (1)

' 获取函数地址
_InitSession := 取函数地址 (hDllInst, "InitSession")
_PredictBase64 := 取函数地址 (hDllInst, "PredictBase64")
_PredictFile := 取函数地址 (hDllInst, "PredictFile")
_FreeSession := 取函数地址 (hDllInst, "FreeSession")
' 检查函数地址是否获取成功
如果真 (_InitSession = 0 _PredictBase64 = 0 _PredictFile = 0 _FreeSession = 0)
输出调试文本 ("Failed to get function address!")
卸载动态链接库 (hDllInst)
返回 (1)

' 初始化会话
code := 调用子程序 (_InitSession)
如果真 (code ≠ 0)
输出调试文本 ("Failed to initialize session!")
卸载动态链接库 (hDllInst)
返回 (1)

' 预测 Base64 编码的验证码
base64Data := "此处省略base64编码的文本型字符串"
resultBase64 := 调用子程序 (_PredictBase64, base64Data)
如果真 (resultBase64 ≠ "")
输出调试文本 ("predictBase64: " + resultBase64)
输出调试文本 ("Failed to predict base64!")

' 预测文件中的验证码
filePath := "./test.png"
resultFile := 调用子程序 (_PredictFile, filePath)
如果真 (resultFile ≠ "")
输出调试文本 ("predictFile: " + resultFile)
输出调试文本 ("Failed to predict file!")

' 释放会话
调用子程序 (_FreeSession)
' 卸载 DLL
卸载动态链接库 (hDllInst)
返回 (0)


作者: qvbydc    时间: 2025-1-9 09:32
尛龍科技 发表于 2025-1-9 01:21
因为没有CaptchaLibrary.dll
我只能把我理解的给你了
[e=0].版本 2

学到了,谢谢




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