【文章标题】: 全新反调试CM
【文章作者】: 半斤八两
【软件名称】: 全新的反调试第1季(无网无壳版).exe
【下载地址】: https://bbs.pediy.com/thread-187142.htm
【使用工具】: IDA、OD、资源工具
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于小生我怕怕, 转载请注明作者并保持文章的完整, 谢谢!
2018年11月07日 14:15:52
作者需求:
一种全新的反调试思路.
程序主要参考了 tmd和超时代 的思路.
程序运行起来后.点那个按钮,会触发 MessageBoxA 断点.
如果你能在ollydbg中断下来, 那么,你就搞掂了,如果你搞掂了,记得分离一下 :)
By 半斤八兩
2014.04.28
0、参考资料、预备知识
1、常见进程注入的实现及内存dump分析——反射式DLL注入(下)
网址:来自 <https://bbs.pediy.com/thread-224241.htm>
2、傀儡进程技术实现
网址:来自 <https://www.52pojie.cn/thread-501486-1-1.html>
3、在VC中使用自定义资源,FindResource,LoadResource,LockResource
网址:来自 <https://www.cnblogs.com/gakusei/articles/1352922.html>
4、调试器设计(2)
网站:来自 <https://bbs.pediy.com/thread-107838.htm>
1、准备工作收集信息
1、软件运行界面
2、资源工具
获取到的信息:
1、里面藏着一个PE文件
2、Dialog里面并没有按钮的选项
3、我们将PE文件导出来为123.exe
3、查看导出来的PE文件信息
1、双击运行是显示错误的
2、我们发现导出来的PE文件里面就有我们需要的按钮
2、IDA、OD结合分析
首先想到的是应该先下MessageBoxA、MessageBoxW(当然是没用的)
1、软件操作都是双击完按钮之后触发的,那么我们该如何定位
2、OD、IDA分析上下文
通过F5跟OD大概获取到的信息:
1、程序释放出自身的PE文件
2、sub_401BB0看参数,应该是把PE文件缓冲区跟大小传进去,然后返回个PID
3、附加进程、恢复线程
3、分析sub_401BB0函数
3、1:首先分析sub_401570函数
获取到的信息:
1、拷贝PE基本信息、区段信息
2、程序是自己实现了LoadLibrary函数
3、2:分析sub_401990函数
总结:
进行傀儡进程操作
1、分析sub_4018A0函数
PCHunter工具可以看到这个傀儡进程
2、分析sub_401830函数
3、后续都是傀儡进程操作了
4、sub_401F10函数调试框架分析
4、1:sub_401D70函数分析
我们在这两处都下断
结合上下文逻辑:
1、B程序无法直接打开
2、A程序又以附加方式打开B,那么就说明A修复了B的BUG
3、我们发现修改上下文的就只有两处,那么我们就在这两处都下断点
代码中断在下面的Context.Eax = sub_401D60(Context.Eax, DebugEvent.dwThreadId);这一句上
那么我们只要知道代码中断的IP地址即可
我们可以通过CONTEXT结构(VS按F12)往上翻
OD查看
出错代码地址:
40145B
5、使用CE、IDA等工具查看B进程的内存状态
发现这里面有一个CC断点,导致代码错误的
第一步先把INT改成NOP
第二步有两种选择
1、这两句NOP掉
00401468 |. 33C1 xor eax,ecx
0040146A |. 35 76983412 xor eax,0x12349876
2、要么就学A程序多加几句汇编代码,再异或回去
00401444 33C1 xor eax,ecx
00401446 35 76983412 xor eax,0x12349876
0040144B 5F pop edi
0040144C C2 0400 retn 0x4
0040144F 90 nop
00401450 57 push edi
00401451 |. BF D80E1400 mov edi,0x140ED8
00401456 |. 8B4424 08 mov eax,dword ptr ss:[esp+0x8]
0040145A ^ EB E8 jmp short 123.00401444
0040145C 90 nop
0040145D 90 nop
0040145E 90 nop
6、完结撒花