|
|
易语言 E-debug 检测特征抹除技术实战:源码解析方案分享
|
径和文件是否存在。")<br><br> 返回 (假)<br> 结束如果<br><br> ; 步骤2:定位PE头结构<br><br> PE头偏移 = 查找PE头偏移 (文件字节集)<br><br> 如果真 (PE头偏移 = 0)<br><br> 调试输出 (“无法找到PE头,请检查文件格式是否正确。”)<br><br> 返回 (假)<br> 结束如果<br><br> ; 步骤3:清空调试目录指针<br><br> 调试目录偏移 = 查找调试目录偏移 (文件字节集, PE头偏移)<br><br> 修改调试目录偏移为随机无意义值<br><br> ; 步骤4:覆盖特征字符串<br><br> 特征字符串偏移 = 查找特征字符串偏移 (文件字节集, PE头偏移)<br><br> 覆盖特征字符串为随机无意义字节<br><br> ; 步骤5:修改调试标志位<br><br> 修改DllCharacteristics字段为正常程序状态<br><br> ; 步骤6:保存修改后的文件<br><br> 写回文件 (程序路径, 修改后的文件字节集)<br><br> 调试输出 (“特征抹除成功。”)<br><br> 返回 (真)<br><br>子程序 查找PE头偏移, 整数型, 私有, 输入文件字节集, 输出PE头偏移<br> 局部变量 签名, 字节集<br><br> 签名 = “MZ”<br><br> 如果真 (取字节集长度 (文件字节集) < 2)<br><br> 返回 (0)<br> 结束如果<br><br> 比较字节集 (文件字节集, 0, 2, 签名)<br><br> 如果真 (取字节集长度 (文件字节集) > 2)<br><br> 返回 (2)<br> 结束如果<br><br> 返回 (0)<br><br>子程序 查找调试目录偏移, 整数型, 私有, 输入文件字节集, PE头偏移, 输出调试目录偏移<br> 局部变量 IMAGENTHEADERS, 结构体<br> 局部变量 DebugDirectoryOffset, 整数型<br><br> IMAGENTHEADERS = 读取结构体 (文件字节集, PE头偏移)<br><br> DebugDirectoryOffset = IMAGENTHEADERS.OptionalHeader.DataDirectory[IMAGEDIRECTORYDEBUG]<br><br> 返回 (DebugDirectoryOffset)<br><br>子程序 查找特征字符串偏移, 整数型, 私有, 输入文件字节集, PE头偏移, 输出特征字符串偏移<br> 局部变量 特征字符串, 字节集<br><br> 特征字符串 = {0x00, 0x45, 0x2D, 0x44, 0x65, 0x62, 0x75, 0x67}<br><br> 特征字符串偏移 = 查找字节集 (文件字节集, PE头偏移, 特征字符串)<br><br> 返回 (特征字符串偏移)<br><br>[本文内容由人工智能科大讯飞 - 星火认知辅助生成,仅供参考] |
|