|
本帖最后由 神行 于 2025-4-1 18:17 编辑
不好意思,之前提的意见,我没注意到你对汇编特别感兴趣。我对你的代码进行了改进。你看看如何。主要增加内存安全验证,优化搜索算法(函数头+函数尾双阶段搜索),添加安全计数(头100字节 尾500字节限制),多重失败检查点,无效长度处理,内存分配失败处理,减少不必要的内存访问,优化跳转逻辑,新增内存属性检查,安全长度限制4KB,独立内存分配复制,错误状态返回
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 机器码 | 字节集 | | | 长度 | 整数型 | | |
机器码 = 取函数机器码_增强版 (&子程序, 长度 ) 如果真 (取字节集长度 (机器码 ) = 0 ) 信息框 ("获取机器码失败!", 0, "错误", ) 调试输出 ("获取成功,长度:" + 到文本 (长度 ), 机器码 ) |
子程序 | 双精度小数型 | | |
参数一 | 整数型 | | | | 参数二 | 双精度小数型 | | | | 返回 (参数一 + 参数二 )|
取函数机器码_增强版 | 字节集 | | |
函数指针 | 整数型 | | | | 返回长度 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 起始偏移 | 整数型 | | | 结束偏移 | 整数型 | | | 安全计数器 | 整数型 | | | 内存保护 | 整数型 | | | 如果真 (函数指针 = 0 或 是否可读内存 (函数指针, 1 ) = 假) 返回 ({ }) 内存保护 = 取内存保护属性 (函数指针 ) 如果真 (位与 (内存保护, #PAGE_EXECUTE_READ ) = 0 ) 返回 ({ }) 置入代码 ({ 139, 69, 8, 137, 69, 252, 51, 210, 137, 85, 248 }) 置入代码 ({ 139, 77, 252, 138, 1, 60, 85, 117, 3, 235, 16, 144 }) 置入代码 ({ 255, 69, 252, 255, 69, 244, 131, 125, 244, 100, 124, 229 }) 置入代码 ({ 233, 88, 0, 0, 0 }) 置入代码 ({ 131, 193, 1, 137, 77, 252 }) 置入代码 ({ 139, 85, 252, 137, 85, 248, 51, 210, 137, 85, 244 }) 置入代码 ({ 139, 117, 248, 138, 6, 60, 139, 117, 19 }) 置入代码 ({ 128, 126, 1, 229, 117, 12, 128, 126, 2, 93, 117, 8 }) 置入代码 ({ 128, 126, 3, 194, 116, 8, 128, 126, 3, 195, 116, 4 }) 置入代码 ({ 255, 69, 248, 255, 69, 244, 131, 125, 244, 500, 124, 204 }) 置入代码 ({ 139, 77, 252, 43, 77, 248, 137, 77, 240 }) 置入代码 ({ 131, 249, 0, 126, 29, 129, 249, 0, 16, 0, 0, 127, 22 }) 置入代码 ({ 139, 85, 252, 139, 77, 248, 43, 202, 137, 77, 240, 233, 5, 0, 0, 0 }) 置入代码 ({ 51, 201, 137, 77, 240 }) 置入代码 ({ 139, 117, 252, 139, 125, 240, 133, 255, 116, 19 }) 置入代码 ({ 106, 0, 255, 117, 240, 232, 40, 0, 0, 0, 137, 69, 232 }) 置入代码 ({ 139, 77, 240, 139, 117, 252, 139, 125, 232, 243, 164 }) 置入代码 ({ 139, 69, 232, 233, 10, 0, 0, 0 }) 置入代码 ({ 51, 192 }) 置入代码 ({ 139, 77, 240, 137, 77, 236 }) 如果真 (是否为空 (返回长度 ) = 假) 返回长度 = 取变量数据地址_整数 (取变量地址 (起始偏移 ) - 取变量地址 (结束偏移 )) 返回 (指针到字节集 (取变量数据地址_整数 (起始偏移 ), 取变量数据地址_整数 (结束偏移 - 起始偏移 )) )
|
|