注册

CpuDbg x96

查看: 2630|回复: 0
收起左侧

[CpuDbg x96] 应用程序无法正常启动(0xc0000142)OEP为0

[复制链接]
发表于 2022-3-14 12:52:58 | 显示全部楼层 |阅读模式
今天刚发布 v0.2.2 内测版到群里,就有一位朋友反馈了一个崩溃BUG.
那位朋友没有发DMP过来,而是直接发来调试有问题的程序过来,
用虚拟机打开发来的文件,加载调试,就出现问题了.
加载后运行, 调试器一直显示运行状态, 但就是没有反应,
不显示窗口, 模块窗口也只加载了 32位和64位 的 ntdll.dll.

觉得很奇怪, 就用od加载试一下, 刚加载(还没运行) 就提示如下:

[Asm] 纯文本查看 复制代码
---------------------------
Protect_sdk反调试测试.exe - 应用程序错误
---------------------------
应用程序无法正常启动(0xc0000142)。请单击“确定”关闭应用程序。 
---------------------------
确定   
---------------------------

0xc0000142 这个错误码,好眼熟, 感觉以前好像在哪见过, 翻翻以前写的博客,果然找到了.
利用StrongOD漏洞反调试

C0000142 STATUS_DLL_INIT_FAILED

只需要把 StrongOD 插件中的 !*Kill BadPE Bug  选项去掉即可.
(注意,去掉之后,需要重启调试器, 否则不生效.)

重启调试器之后,再加载目标程序,就没有刚刚的提示了, 但这次中断在 ntdll.dll 中, 如下:

[Asm] 纯文本查看 复制代码
77C90F3C    8975 FC         MOV DWORD PTR SS:[EBP-0x4], ESI      ;中断在此
77C90F3F    EB 0E           JMP SHORT ntdll.77C90F4F
77C90F41    33C0            XOR EAX, EAX
77C90F43    40              INC EAX
77C90F44    C3              RET

看了一下调试器设置选项, 没有勾选 tls 中断系统 之类的选项.
又看了一下OEP 如下:

[Asm] 纯文本查看 复制代码
004000A8    00000000    DD 00000000          ;  AddressOfEntryPoint = 0x0

这个程序oep是0, 调试器默认会在oep下断, 就相当于是在 magic "MZ" 处下断了. 这里就是程序的BUG了, 想要解决, 最好的办法,就是在载入时, 中断. 这个时候,
无论是否设置了 中断在系统模块中, 都应当中断. 否则, 程序就会直接跑飞了.或者直接抛个异常了.
至于od1.x是如何实现中断在ntdll的, 何时中断的, 等问题,还没研究. 等调试器选项 Events(事件) 写好后,再来分析这些吧.

calc_Anti_自己构造的畸形BIN_OEP为0.7z (36.1 KB, 下载次数: 1)

回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注册

QQ|Archiver|手机版| CpuDbg x96

GMT, 2024-12-22 10:00 , Processed in 0.078125 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表