大晚上的 有点困了 写篇帖子睡觉
当PE文件经过某种手工修改后 会导致OD无法识别该文件PE文件
于是构成反调试
下面通过使用OD调试OD找到OD代码不合理的地方 修改之
由于OD里面空闲的空间很少 所以我不得不修改了某些看似无用的代码 来存放我的代码
当然也可以加节什么的 如果大家使用中出现了情况
请将样本PE文件 发于我邮箱:443530836@qq.com
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
第一种BUG OD在判断NT选项头时候 不是读取数据目录的个数 在动态的进行计算的
而是直接判断SizeOfOptionHeader是否为E0
而数据目录是最小可以指定为2项 最多就没有试过是多少了
总而言之 数据目录是可以动态变化的 于是选项头也就是变长的了
所以OD判断选项头是否为E0是错误滴...
所以.....
第二个BUG是 在读取导入表名称的时候 没有检查长度 如果在导入表中构造一个超级长的DLL名称 比如大于256个字节 OD具体怎么做的 我没有怎么调试
这个也是可以构成反调试的 这个BUG 我只是粗略的跟踪了一下
找到了一个关键点 并修复之 使用中可能会出现BUG
于是我将调试文档 修改后的OD exe 以及 会产生OD反调试的程序 一并打包上传了
OD_导入表超长DLL.exe 这个里面包含了 数据目录的代码
所以直接使用这个即可 将原来的Ollydbg.exe重命名备份后
在将此exe替换过去即可
下楼上传附件.......
当PE文件经过某种手工修改后 会导致OD无法识别该文件PE文件
于是构成反调试
下面通过使用OD调试OD找到OD代码不合理的地方 修改之
由于OD里面空闲的空间很少 所以我不得不修改了某些看似无用的代码 来存放我的代码
当然也可以加节什么的 如果大家使用中出现了情况
请将样本PE文件 发于我邮箱:443530836@qq.com
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
第一种BUG OD在判断NT选项头时候 不是读取数据目录的个数 在动态的进行计算的
而是直接判断SizeOfOptionHeader是否为E0
而数据目录是最小可以指定为2项 最多就没有试过是多少了
总而言之 数据目录是可以动态变化的 于是选项头也就是变长的了
所以OD判断选项头是否为E0是错误滴...
所以.....
第二个BUG是 在读取导入表名称的时候 没有检查长度 如果在导入表中构造一个超级长的DLL名称 比如大于256个字节 OD具体怎么做的 我没有怎么调试
这个也是可以构成反调试的 这个BUG 我只是粗略的跟踪了一下
找到了一个关键点 并修复之 使用中可能会出现BUG
于是我将调试文档 修改后的OD exe 以及 会产生OD反调试的程序 一并打包上传了
OD_导入表超长DLL.exe 这个里面包含了 数据目录的代码
所以直接使用这个即可 将原来的Ollydbg.exe重命名备份后
在将此exe替换过去即可
下楼上传附件.......