模块某模块73源码
功能说明:该程序是由易语言编写的专用工具,其主要功能是实现 X86 架构下的汇编代码解析与机器码生成。简单来说,它是一个内置于易语言环境中的微型汇编器(Assembler),允许开发者输入人类可读的汇编指令文本(如 mov、call、jmp 等),程序则将其翻译成计算机可执行的二进制机器码(字节集或十六进制形式)。
程序的整体架构分为两个核心部分:
1. **核心功能库(程序集 EASM)**:
这是程序最主要的部分,封装了汇编工作的所有逻辑。
- **`EASM__asm`**:这是最核心的汇编解析子程序。它接收文本类型的参数,支持用 "|" 符号或换行符分隔多条汇编指令。该函数内部包含了指令预处理、助记符识别、操作数拆分以及错误检查机制。它会遍历每一行指令,识别出指令头(Opcode),并查找对应的机器码字节。如果遇到未知的指令,会输出【错误】提示;如果指令格式不匹配,可能会输出【警告】。
- **数据存储与管理**:程序定义了一个名为 `g_Codes` 的字节集变量用于累积生成的机器码。配合 `EASM_AddCode` 子程序将转换后的字节存入缓存,`EASM_NewCode` 用于清空缓存以便开始新一轮编译。
- **结果获取**:提供了 `EASM_GetCode` 获取字节集形式的代码,以及 `EASM_GetHexCode` 获取方便查看和拷贝的十六进制字符串形式代码。
2. **测试与入口(程序集 1)**:
这部分主要展示如何调用上述核心库。
- **`_启动子程序`**:程序的入口点,负责初始化并调用测试逻辑。
- **`_临时子程序`**:作为主要的功能演示区。在此子程序中,程序记录了开始时间,然后调用 `EASM__asm` 来处理具体的汇编语句(例如代码中注释掉的部分或实际调用的 `"call eax|||jmp 5667"`)。处理结束后,程序会将生成的机器码十六进制字符串放入剪贴板,并输出从开始到结束的耗时,方便测试汇编器的性能和正确性。代码中还包含了大量关于底层内存操作和寄存器操作的注释(如 `_asm_` 相关代码),暗示该工具潜在的应用场景涉及系统底层开发或逆向分析。
**程序用途总结**:
这个工具解决了易语言作为高级编程语言无法直接灵活控制 CPU 底层指令的问题。通过引入这个模块,易语言开发者可以在自己的程序里动态生成特定的 Shellcode、进行内存直接读写操作、或者调用没有现成易语言接口支持的高级系统功能。它非常适合用于安全研究、软件保护、逆向工程辅助工具的开发,以及那些对运行速度有极致要求且需要底层优化的业务场景。总的来说,这是一个帮助易语言程序具备底层汇编能力的实用化编译模块。
======程序集1
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |
======EASM
| |
| |------ EASM_AddCode
| |
| |------ EASM_GetHexCode
| |
| |------ EASM_GetCode
| |
| |------ EASM_NewCode
| |
| |------ EASM__asm
| |
| |------ 无操作数指令
| |
| |------ 指令处理
| |
| |------ noimm8
| |
| |------ 寄存器32位判断
| |
| |------ 寄存器16位判断
| |
| |------ 寄存器8位判断
| |
| |------ 判断寄存器
| |
| |------ 获取操作数
| |
| |------ 获取段标识数据
| |
| |------ reg_reg_OpCode
| |
| |------ reg16_reg16_opcode
| |
| |------ regword_regword_immx
| |
| |------ regword_regword_opcode
| |
| |------ regword_opcode
| |
| |------ regword_imm8_opcode
| |
| |------ regword_memword_opcode
| |
| |------ reg1632_mem1632_opcode
| |
| |------ memword_imm8_opcode
| |
| |------ mem_reg_OpCode
| |
| |------ memword_regword_Opcode
| |
| |------ reg_mem_OpCode
| |
| |------ mem_imm_OpCode
| |
| |------ reg_imm_OpCode
| |
| |------ reg_imm8_OpCode
| |
| |------ acc_imm_Opcode
| |
| |------ GetOpr
| |
| |------ 是否为指令头
| |
| |------ GetOpr2
| |
| |
======扩展模块
| |
| |------ _shl
| |
| |------ HexToInt
| |
| |------ 字节到十六进制
| |
| |------ 字节集到十六进制
| |
| |
======ESuperASM
| |
| |------ reg_reg
| |
| |------ reg16_reg16
| |
| |------ regword_regword
| |
| |------ regword_regword2
| |
| |------ regword
| |
| |------ regword_imm8
| |
| |------ memofs_acc
| |
| |------ acc_memofs
| |
| |------ reg_imm
| |
| |------ mem_imm
| |
| |------ memword_imm8
| |
| |------ memword_regword
| |
| |------ regword_memword
| |
| |------ reg_mem
| |
| |------ regword_memword2
| |
| |------ mem_reg
| |
| |------ _imm8
| |
| |------ acc_imm
| |
| |------ Addsss
| |
| |------ reg1632_mem1632
| |
| |
======标签处理
| |
| |------ 加入标签
| |
| |
======调用的Dll
| |
| |---[dll]------ lstrcpyn_字节集
| |
| |---[dll]------ CallWindowProc
======PE类
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |------ PE_重置
| |
| |------ PE_代码定位
| |
| |------ PE_加入资源数据
| |
| |------ PE_加入资源Res
| |
| |------ 解析Res
| |
| |------ PE_加入资源2
| |
| |------ PE_不要迷恋哥_哥不是传说_哥只是个茶几_承载着所有的杯具_mamashuomingzichangcaibijiaoyougexing_suoyiwobazichengxvmingzigaidehenchanghenchang_xiandezhegezichengxvshigebijiaoyougexingdezichengxv
| |
| |------ PE_加入资源
| |
| |------ 生成资源
| |
| |------ PE_加入数据
| |
| |------ PE_加入全局变量
| |
| |------ 构造导入表
| |
| |------ PE_取API地址
| |
| |------ PE_导入API
| |
| |------ PE_加入代码
| |
| |------ PE_构造Exe
| |
| |------ 文本到字节
| |
| |------ PE_构造Dll
| |
| |------ PE_导出函数
| |
| |------ 构造导出表
| |
| |------ PE_加入重定位
| |
| |------ 构造重定位
| |
| |
======辅助类
| |
| |------ PE_Switch_加入判断
| |
| |------ PE_Switch_生成代码
| |
| |
======正则表达式类
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 创建
| |
| |------ 匹配
| |
| |------ 搜索全部
| |
| |------ 取匹配文本
| |
| |------ 取子表达式个数
| |
| |------ 取子匹配文本
| |
| |------ 替换
| |
| |
======调用的Dll
| |
| |---[dll]------ RtlMoveMemory_IMAGE_NT_HEADERS_1
| |
| |---[dll]------ RtlMoveMemory_Byte
| |
| |---[dll]------ RtlMoveMemory_IMAGE_SECTION_HEADER_1
| |
| |---[dll]------ RtlMoveMemory_IMAGE_IMPORT_DESCRIPTOR_1
| |
| |---[dll]------ RtlMoveMemory_IMAGE_RESOURCE_DIRECTORY
| |
| |---[dll]------ RtlMoveMemory_IMAGE_RESOURCE_DIRECTORY_ENTRY
| |
| |---[dll]------ RtlMoveMemory_IconDir
| |
| |---[dll]------ RtlMoveMemory_IconDirEntry
| |
| |---[dll]------ RtlMoveMemory_IconDir2
| |
| |---[dll]------ RtlMoveMemory_IconDirEntry2
| |
| |---[dll]------ RtlMoveMemory_IMAGE_RESOURCE_DATA_ENTRY
| |
| |---[dll]------ GetProcAddress
| |
| |---[dll]------ LoadLibrary
| |
| |---[dll]------ RtlMoveMemory_IMAGE_EXPORT_DIRECTORY
| |
| |---[dll]------ lstrcpyn_字节集
======验证
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |------ _模块_管理员注册
| |
| |------ _模块_注册3
| |
| |------ _模块_注册2
| |
| |------ _模块_注册
| |
| |------ _模块_免费注册
| |
| |------ _模块_本地验证_调试输出
| |
| |------ _模块_协议
| |
| |------ _模块_写版权标记
| |
| |------ _模块_综合验证
| |
| |------ _模块_USB验证
| |
| |------ _模块_网络验证
| |
| |------ _模块_商业用户组验证
| |
| |------ _模块_标识验证
| |
| |------ _模块_免费自助硬件效验
| |
| |------ _模块_自助硬件效验
| |
| |------ _模块_自助USB效验
| |
| |------ _模块_自助服务
| |
| |------ _模块_验证服务
| |
| |
======自动验证类
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ _模块_自动验证
| |
| |------ _模块_辅助验证
| |
| |
======功能
| |
| |------ _模块_非法检测
| |
| |------ _模块_检测
| |
| |------ _模块_执行一次性代码
| |
| |------ 发生错误
| |
| |------ _模块_写内存特征
| |
| |------ _模块_暗桩
| |
| |------ _模块_调用转向
| |
| |------ _模块_商业验证
| |
| |------ _模块_内部验证A
| |
| |------ _模块_内部验证B
| |
| |------ 登陆论坛_Discuz
| |
| |------ 清除Cookie_Discuz
| |
| |------ 取易语言安装目录
| |
| |------ 取CPU序列号
| |
| |------ 取特殊目录
| |
| |------ 下载
| |
| |------ URL编码
| |
| |------ 生成注册码
| |
| |------ 验证注册码
| |
| |------ 取硬盘特征
| |
| |------ 取硬盘特征字2
| |
| |------ md5
| |
| |------ crc32
| |
| |------ rc4
| |
| |------ 取硬盘特征_处理字符串
| |
| |------ 取硬盘特征_特征字计算
| |
| |------ 取磁盘序列号
| |
| |------ 取驱动器列表
| |
| |------ 取文件特征
| |
| |------ 读USB验证文件
| |
| |------ 写USB验证文件
| |
| |------ 写入内存数据
| |
| |------ 释放内存
| |
| |------ 创建远程线程
| |
| |------ 创建远程线程_多参
| |
| |------ 字节集到整数
| |
| |------ 生成汇编代码2
| |
| |------ 取父进程ID
| |
| |------ 枚举引用模块
| |
| |------ 取执行源码路径
| |
| |------ 网络是否连接
| |
| |------ API_InternetGetConnectedState
| |
| |
======内存注入DLL类1
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 加载
| |
| |------ 取函数地址
| |
| |------ 卸载
| |
| |------ 是否成功
| |
| |------ 调用函数
| |
| |
======网络验证
| |
| |------ _模块_初始化对象
| |
| |------ _模块_检查更新
| |
| |------ _模块_网络验证_安全检查
| |
| |------ _模块_网络验证_网页检查
| |
| |------ _模块_网络验证_增加绑定
| |
| |------ _模块_网络验证_激活账号
| |
| |------ _模块_网络验证_激活易语言编程论坛账号
| |
| |------ _模块_网络验证_加密
| |
| |
======类1
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 方法1
| |
| |------ 方法2
| |
| |
======类2
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 方法1
| |
| |------ 方法2
| |
| |------ 方法3
| |
| |
======程序集1
| |
| |------ 子程序1
| |
| |------ 子程序2
| |
| |------ 子程序3
| |
| |------ 子程序4
| |
| |------ 子程序5
| |
| |------ 子程序6
| |
| |------ 子程序7
| |
| |
======调用的Dll
| |
| |---[dll]------ 正版用户验证成功
| |
| |---[dll]------ 映射文件对象_
| |
| |---[dll]------ 解除文件映射_
| |
| |---[dll]------ 创建文件映射对象_
| |
| |---[dll]------ 打开文件映射对象_
| |
| |---[dll]------ _取指针_文本型
| |
| |---[dll]------ _设备操作3
| |
| |---[dll]------ _设备操作4
| |
| |---[dll]------ _设备操作5
| |
| |---[dll]------ CreateFile
| |
| |---[dll]------ RtlMoveMemory_IDE
| |
| |---[dll]------ RtlMoveMemory_SCSI
| |
| |---[dll]------ _取窗口区域位置
| |
| |---[dll]------ _取当前窗口
| |
| |---[dll]------ 取设备场景_
| |
| |---[dll]------ 使用指定属性创建逻辑字体_
| |
| |---[dll]------ 选入设备场景_
| |
| |---[dll]------ SetBkMode_
| |
| |---[dll]------ 设置前景色_
| |
| |---[dll]------ TextOut_
| |
| |---[dll]------ 删除对象_
| |
| |---[dll]------ 释放设备场景_
| |
| |---[dll]------ 获取特别文件夹位置_
| |
| |---[dll]------ 从列表id取路径_
| |
| |---[dll]------ CryptAcquireContext
| |
| |---[dll]------ CryptCreateHash
| |
| |---[dll]------ CryptReleaseContext
| |
| |---[dll]------ CryptHashData
| |
| |---[dll]------ CryptDestroyHash
| |
| |---[dll]------ CryptGetHashParam
| |
| |---[dll]------ GetVolumeInformation
| |
| |---[dll]------ GetLogicalDriveStrings
| |
| |---[dll]------ GetDriveTypeA
| |
| |---[dll]------ LocalSize_OFSTRUCT
| |
| |---[dll]------ _取文件时间
| |
| |---[dll]------ _时间结构转换
| |
| |---[dll]------ _打开文件_OFSTRUCT
| |
| |---[dll]------ _关闭对象
| |
| |---[dll]------ _动态调用子程序
| |
| |---[dll]------ CallWindowProc
| |
| |---[dll]------ _取当前线程句柄
| |
| |---[dll]------ _取库函数地址3
| |
| |---[dll]------ _取模块句柄2
| |
| |---[dll]------ Beep
| |
| |---[dll]------ _投递消息
| |
| |---[dll]------ _创建快照
| |
| |---[dll]------ _第一个
| |
| |---[dll]------ _第一个模块
| |
| |---[dll]------ _打开进程
| |
| |---[dll]------ _终止进程
| |
| |---[dll]------ _下一个模块
| |
| |---[dll]------ _下一个
| |
| |---[dll]------ _创建线程
| |
| |---[dll]------ _分配内存
| |
| |---[dll]------ _释放内存
| |
| |---[dll]------ _内存写字节集
| |
| |---[dll]------ _创建远程线程
| |
| |---[dll]------ _等待对象信号
| |
| |---[dll]------ _取中止线程退出代码
| |
| |---[dll]------ _复制对象句柄
| |
| |---[dll]------ _取指针_整数型
| |
| |---[dll]------ _取指针_字节集
| |
| |---[dll]------ _写内存3
| |
| |---[dll]------ _取库函数地址
| |
| |---[dll]------ _装载DLL
| |
| |---[dll]------ _取自进程ID
| |
| |---[dll]------ _设备操作2
| |
| |---[dll]------ _指针_写字节集
| |
| |---[dll]------ _获得句柄
| |
| |---[dll]------ GetWindowText
| |
| |---[dll]------ GetClassName
| |
| |---[dll]------ _取窗口进程ID
| |
| |---[dll]------ _取屏幕句柄
======_常用类
| |
|&nbs
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。