精易论坛

标题: 从c++转易语言代码的一些C符号问题 [打印本页]

作者: 一杯愁绪    时间: 2024-11-21 07:57
标题: 从c++转易语言代码的一些C符号问题
[C++] 纯文本查看 复制代码
extern "C" __declspec(dllexport) void decrypt_fname(char* buf, unsigned __int16 len,unsigned __int32 key) {

        char* v2; __int64 result; unsigned int v5; __int64 v6; __int64 v7; int v8;

        result = key;



        v2 = buf;

        v5 = len;

        v8 = result;

        if (v5) {

                v6 = 0;

                v7 = v5;

                do {

                        ++v2;

                        result = v6++ & 3;

                        *(v2 - 1) ^= v5 ^ *((char*)&v8 + result);

                        --v7;

                } while (v7);

        }

}





  
子程序名返回值类型公开备 注
decrypt_fname  
参数名类 型参考可空数组备 注
buf字节集
len短整数型
key整数型
变量名类 型静态数组备 注
v2字节集 
result长整数型 
v5整数型 
v6长整数型 
v7长整数型 
v8整数型 
result = key
v2 = buf
v5 = len
v8 = result
如果真 (v5 ≠ 0)
v6 = 0
v7 = v5
判断循环首 (v7 ≠ 0)
v2 = v2 + 1
result = 位与 (v6, 3)
v6 = v6 + 1
(v2-1) =1
判断循环尾 ()







这是原代码,想要转为易的时候其中*(v2 - 1) ^= v5 ^ *((char*)&v8 + result)   这里的* [color=rgba(0, 0, 0, 0.85)]解引用操作符  在E上应当如何操作呢??


作者: 一杯愁绪    时间: 2024-11-21 07:59
这里其实原本是写的C的DLLL 拿去E调用   奇葩的是放在E源码里面跑 就报错 找不到DLL命令 ,单独写一个E的窗口程序呢,直接调用又没问题 完全相同的代码,排除文件名 路径等问题了
作者: 没事瞎琢磨    时间: 2024-11-21 08:26
一杯愁绪 发表于 2024-11-21 07:59
这里其实原本是写的C的DLLL 拿去E调用   奇葩的是放在E源码里面跑 就报错 找不到DLL命令 ,单独写一个E的窗 ...

编译为32位dll
作者: b0y    时间: 2024-11-21 08:49
有解密数据吗 看看对不对
作者: 一杯愁绪    时间: 2024-11-21 17:43
没事瞎琢磨 发表于 2024-11-21 08:26
编译为32位dll

检查过的,确定是 x86 编译的
作者: 一杯愁绪    时间: 2024-11-21 17:44
b0y 发表于 2024-11-21 08:49
有解密数据吗 看看对不对

你看我E部分的代码还没改完,往下不知道怎么改了
作者: 一杯愁绪    时间: 2024-11-21 17:44
一杯愁绪 发表于 2024-11-21 17:44
你看我E部分的代码还没改完,往下不知道怎么改了

  *(v2 - 1) ^= v5 ^ *((char*)&v8 + result)


就这一段不会了
作者: 798924038    时间: 2024-11-22 18:56
仅供参考。本人c++也挺菜。太复杂的指针看着挺懵。 指针到值(v2-1)  = 指针到值(v2-1)  异或 ( v5   异或    指针到值(  v8的地址 + result )    )
找不到dll命令 可能是因为cdecl约定。把函数改成stdcall约定。或者在易语言DLL命令前面加个@ 试试看




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