分类
易语言例程

使用LdrLoadDll 注入DLL,支持注入64位dll

源码是c++代码翻译过来的, 所以, 那些指针读写的偏移我就不做过多的讲解…..

那些偏移都是对应某个成员…. 众所周知, 易语言的数据类型是个坑, 所以, 申请一块空间当成一个结构使用了

愿意研究的话, 结构是这个

typedef struct CALL_ARGUMENT_DATA
{
    PFN_RtlInitUnicodeString    fnRtlInitUnicodeString;     // 加载unicode字符串
    PFN_LdrLoadDll              fnLdrLoadDll;               // 加载dll的函数

    // 下面5个是 LdrLoadDll 需要使用的数据, DllName通过RtlInitUnicodeString来提供被 LdrLoadDll 使用
    WCHAR                       DllName[260];               // dll完整路径
    PWCHAR                      DllPath;                    // LdrLoadDll第一个参数, Dll路径, 可以为0
    ULONG                       Flags;                      // LdrLoadDll第二个参数, 标识
    UNICODE_STRING              UnicodeString;              // LdrLoadDll第三个参数, dll路径 UNICODE_STRING 结构
    HANDLE                      hModule;                    // LdrLoadDll第四个参数, 模块地址, 注入后模块地址保存到这里

    // 下面这些成员是获取函数地址使用的数据
    PFN_LdrGetProcedureAddress  fnLdrGetProcedureAddress;   // 获取函数地址
    PFN_RtlInitAnsiString       fnRtlInitAnsiString;        // 加载ansi字符串
    ANSI_STRING                 AnsiString;                 // 获取函数名的ansi字符串结构
    ULONG                       Ordinal;                    // LdrGetProcedureAddress 第三个参数
    PFN_CallFun                 fun;                        // LdrGetProcedureAddress第四个参数, 被调用的函数名 函数原型, GetProcAddress() 得到的函数

    PFN_MessageBox              pfn_MessageBox;             // 信息框函数地址
    BOOL                        isDebug;                    // 是否调试, 调试的话就弹出信息框
    char                        funName[260];               // 被调用的函数名
    DWORD                       funArg;                     // 传递到被调用的函数参数
    LPVOID                      funRet;                     // 被调用函数的返回值
    char                        argData[2000];              // 传递到函数里的数据, 参数数据最大支持2000个字节
}*LPCALL_ARGUMENT_DATA;

注入流程:

1. 创建远程线程

2. 注入一段代码到目标进程里执行

3. 这段代码调用 LdrLoadDll 加载dll

4. 调用 LdrGetProcedureAddress 获取函数地址, 然后调用, 返回

2021-12-17 更新

使用了eWOW64Ext http://www.sanye.cx/?id=12671

1. 注入32位进程只能使用32位的dll

2. 注入64位进程只能使用64位的dll

支持注入任务管理器

分类
图形图像源码

内存读写生成渐变色源码

不使用任何绘图相关命令, 只使用了内存读写功能

内存读写生成渐变色源码.png

分类
图形图像源码

GIF录制工具 V1.1 超详细备注 可录制鼠标 可编辑帧

带鼠标录制,不是固定的一个普通鼠标指针

加入了编辑帧的功能,目前只加入了删除功能

增加了几个常用设置

分类
易语言视频教程

易语言打造属于自己的私人视频播放器

第一课讲解:

                视频主要讲解制作视频播放器的过程,使用的是迅雷的播放器引擎

                从开始新建易程序到播放器的制作完成

第二课,第三课不知道总结:

                1.主进程和播放器进程的通讯

第四课讲解:

                1.按键信息,设置快捷键

                2.窗口大小要跟随视频分辨率大小而改变

                3.增加一个停止按钮

                4.设置播放器背景图片

                5.拖放支持,打开文件时同时把当前目录下同类型文件加入列表

第五课讲解:

                1.取视频的音轨,设置视频的音轨(当视频有双音轨的时候,可以选择音轨)

                2.跟声音有关的

第六课讲解:

                1.播放网络视频的介绍

分类
多媒体类源码

基于迅雷Aplayer引擎的视频播放器源码

基于迅雷Aplayer引擎的视频播放器源码

分类
易语言例程

易语言组件移动例程源码

易语言组件移动例程源码,类似于屏保。

易语言组件移动例程源码

分类
易语言例程

易语言禁止外部消息关闭窗口

.版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 窗口信息, 整数型 .子程序 _按钮1_被单击 销毁 () .子程序 _按钮2_被单击 结束 () .子程序 _按钮3_被单击 发送信息 (16, 0, 0) .子程序 _按钮5_被单击 PostMessageA (取窗口句柄 (), 16, 0, 0) .子程序 _按钮4_被单击 SendMessageA (取窗口句柄 (), 16, 0, 0) .子程序 __启动窗口_将被销毁 .如果真 (窗口信息 ≠ 0) SetWindowLongA (取窗口句柄 (), -4, 窗口信息) .如果真结束 .子程序 _选择框1_被单击 .判断开始 (选择框1.选中) 窗口信息 = SetWindowLongA (取窗口句柄 (), -4, 到整数 (&消息处理)) ' 获取窗口消息 .默认 SetWindowLongA (取窗口句柄 (), -4, 窗口信息) .判断结束 .子程序 消息处理, 整数型 .参数 句柄 .参数 消息 .参数 参数1 .参数 参数2 .如果真 (消息 = 16) ' 如果消息值是关闭,返回0 不执行 返回 (0) .如果真结束 返回 (CallWindowProcA (窗口信息, 句柄, 消息, 参数1, 参数2)) ' 否则把消息返回
分类
易语言例程

全局钩子检测鼠标键盘状态源码

.版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 鼠标钩子句柄, 整数型 .程序集变量 键盘钩子句柄, 整数型 .子程序 __启动窗口_创建完毕 鼠标钩子句柄 = 到整数 (设置系统钩子_ (14, &处理消息, 取实例句柄_ (0), 0)) 键盘钩子句柄 = 到整数 (设置系统钩子_ (13, &处理消息, 取实例句柄_ (0), 0)) .子程序 处理消息, 整数型 .参数 代码值, 整数型 .参数 消息值, 整数型 .参数 参数二, 整数型 .局部变量 按键信息, 按键信息 .局部变量 坐标, 坐标_ 拷贝内存_ (按键信息, 参数二, 28) ' 消息值 513=鼠标左键按下 514=鼠标左键放开 516=右键按下 517=右键放开 519=中键按下 520=中键放开 .判断开始 (消息值 > 512) .判断开始 (消息值 = 513) 标题 = “鼠标 左键按下” .判断 (消息值 = 514) 标题 = “鼠标 左键放开” .判断 (消息值 = 516) 标题 = “鼠标 右键按下” .判断 (消息值 = 517) 标题 = “鼠标 右键放开” .判断 (消息值 = 519) 标题 = “鼠标 中键按下” .判断 (消息值 = 520) 标题 = “鼠标 中键放开” .默认 .判断结束 .判断 (消息值 = 256) 标题 = “键盘 ” + 键盘_键代码取键名 (按键信息.键代码) + “ 按下” .判断 (消息值 = 257) 标题 = “键盘 ” + 键盘_键代码取键名 (按键信息.键代码) + “ 放开” .判断 (消息值 = 260 且 按键信息.键代码 = 164 或 按键信息.键代码 = 165) 标题 = “键盘 ” + 键盘_键代码取键名 (按键信息.键代码) + “ 按下” .默认 .判断结束 返回 (呼叫下一钩子_ (鼠标钩子句柄, 代码值, 消息值, 参数二)) .子程序 __启动窗口_可否被关闭, 逻辑型 释放系统钩子_ (键盘钩子句柄) 释放系统钩子_ (鼠标钩子句柄) .子程序 键盘_键代码取键名, 文本型, 公开, 取键代码的键名(返回键名) .参数 键代码, 整数型, , 键代码,如填:65,将返回 A键 .局部变量 文本, 文本型 .判断开始 (键代码 = #Ctrl键) 文本 = “Ctrl键” .判断 (键代码 = #Shift键) 文本 = “Shift键” .判断 (键代码 = #Alt键) 文本 = “Alt键” .判断 (键代码 = #键0) 文本 = “0键” .判断 (键代码 = #键1) 文本 = “1键” .判断 (键代码 = #键2) 文本 = “2键” .判断 (键代码 = #键3) 文本 = “3键” .判断 (键代码 = #键4) 文本 = “4键” .判断 (键代码 = #键5) 文本 = “5键” .判断 (键代码 = #键6) 文本 = “6键” .判断 (键代码 = #键7) 文本 = “7键” .判断 (键代码 = #键8) 文本 = “8键” .判断 (键代码 = #键9) 文本 = “9键” .判断 (键代码 = #A键) 文本 = “A键” .判断 (键代码 = #B键) 文本 = “B键” .判断 (键代码 = #C键) 文本 = “C键” .判断 (键代码 = #D键) 文本 = “D键” .判断 (键代码 = #E键) 文本 = “E键” .判断 (键代码 = #F键) 文本 = “F键” .判断 (键代码 = #G键) 文本 = “G键” .判断 (键代码 = #H键) 文本 = “H键” .判断 (键代码 = #I键) 文本 = “I键” .判断 (键代码 = #J键) 文本 = “J键” .判断 (键代码 = #K键) 文本 = “K键” .判断 (键代码 = #L键) 文本 = “L键” .判断 (键代码 = #M键) 文本 = “M键” .判断 (键代码 = #N键) 文本 = “N键” .判断 (键代码 = #O键) 文本 = “O键” .判断 (键代码 = #P键) 文本 = “P键” .判断 (键代码 = #Q键) 文本 = “Q键” .判断 (键代码 = #R键) 文本 = “R键” .判断 (键代码 = #S键) 文本 = “S键” .判断 (键代码 = #T键) 文本 = “T键” .判断 (键代码 = #U键) 文本 = “U键” .判断 (键代码 = #V键) 文本 = “V键” .判断 (键代码 = #W键) 文本 = “W键” .判断 (键代码 = #X键) 文本 = “X键” .判断 (键代码 = #Y键) 文本 = “Y键” .判断 (键代码 = #Z键) 文本 = “Z键” .判断 (键代码 = #F1键) 文本 = “F1键” .判断 (键代码 = #F2键) 文本 = “F2键” .判断 (键代码 = #F3键) 文本 = “F3键” .判断 (键代码 = #F4键) 文本 = “F4键” .判断 (键代码 = #F5键) 文本 = “F5键” .判断 (键代码 = #F6键) 文本 = “F6键” .判断 (键代码 = #F7键) 文本 = “F7键” .判断 (键代码 = #F8键) 文本 = “F8键” .判断 (键代码 = #F9键) 文本 = “F9键” .判断 (键代码 = #F10键) 文本 = “F10键” .判断 (键代码 = #F11键) 文本 = “F11键” .判断 (键代码 = #F12键) 文本 = “F12键” .判断 (键代码 = #F13键) 文本 = “F13键” .判断 (键代码 = #F14键) 文本 = “F14键” .判断 (键代码 = #F15键) 文本 = “F15键” .判断 (键代码 = #F16键) 文本 = “F16键” .判断 (键代码 = #Break键) 文本 = “Break” .判断 (键代码 = #回车键) 文本 = “回车键” .判断 (键代码 = #Pause键) 文本 = “Pause键” .判断 (键代码 = #CapsLock键) 文本 = “Caps Lock键” .判断 (键代码 = #NumLock键) 文本 = “NumLock键” .判断 (键代码 = #ScrollLock键) 文本 = “ScrollLock键” .判断 (键代码 = #Esc键) 文本 = “Esc键” .判断 (键代码 = #空格键) 文本 = “空格键” .判断 (键代码 = #PageUp键) 文本 = “PageUp键” .判断 (键代码 = #PageDown键) 文本 = “PageDown键” .判断 (键代码 = #Home键) 文本 = “Home键” .判断 (键代码 = #End键) 文本 = “End键” .判断 (键代码 = #左光标键) 文本 = “左光标键” .判断 (键代码 = #上光标键) 文本 = “上光标键” .判断 (键代码 = #右光标键) 文本 = “右光标键” .判断 (键代码 = #下光标键) 文本 = “下光标键” .判断 (键代码 = #Ins键) 文本 = “Ins键” .判断 (键代码 = #Del键) 文本 = “Del键” .判断 (键代码 = #分号键) 文本 = “分号键” .判断 (键代码 = #等号键) 文本 = “等号键” .判断 (键代码 = #逗号键) 文本 = “逗号键” .判断 (键代码 = #减号键) 文本 = “减号键” .判断 (键代码 = #圆点键) 文本 = “圆点键” .判断 (键代码 = #除号键) 文本 = “除号键” .判断 (键代码 = #反撇号键) 文本 = “反撇号键” .判断 (键代码 = #左中括号键) 文本 = “左中括号键” .判断 (键代码 = #右中括号键) 文本 = “右中括号键” .判断 (键代码 = #斜杠键) 文本 = “斜杠键” .判断 (键代码 = #单引号键) 文本 = “单引号键” .判断 (键代码 = 106) 文本 = “乘号键” .判断 (键代码 = 107) 文本 = “加号键” .判断 (键代码 = #退格键) 文本 = “退格键” .判断 (键代码 = 91) 文本 = “Win键” .判断 (键代码 = 93) 文本 = “菜单键” .判断 (键代码 = 160) 文本 = “左Shift键” .判断 (键代码 = 161) 文本 = “右Shift键” .判断 (键代码 = 164) 文本 = “左Alt键” .判断 (键代码 = 165) 文本 = “右Alt键” .判断 (键代码 = 162) 文本 = “左Ctrl键” .判断 (键代码 = 163) 文本 = “右Ctrl键” .判断 (键代码 = 44) 文本 = “PrtSc键” .默认 .判断结束 ' 文本 = “键值错误” 返回 (文本)
分类
易语言例程

仿精易编程助手屏幕取色功能源码

仿精易编程助手屏幕取色功能源码

仿精易编程助手屏幕取色功能源码

分类
网络相关源码

易语言解密MD5小工具源码

易语言解密MD5小工具源码

易语言解密MD5小工具源码