!EP(EXE Pack)1.4.exe

首先查壳,显示是!EP(EXE Pack)1.4.exe
在这里插入图片描述
根据查阅国外文献资料,试运行,发现该壳重新运行创建了自己,有一定的反调试。就像下面的情况,F9执行程序,调试器直接中断,程序还能正常运行。
在这里插入图片描述
于是在CreateProcessA和CreateProcessW函数处都下上断点,果然断住了。
在这里插入图片描述
在CreateProcessA处断住,并且创建的进程仍然是自己,说明程序在解密完成后,直接重新创建了自己,所以在上面的je处下硬件执行断点。因为je上面全是解密过程,不能再je指令上下断点,那时候还没有解密完全。查阅资料了解到je是判断是否有调试的关键跳转,只要把je改为jmp就可以让程序直接正常运行。
接下来按照大佬的指示,将GetModulHandleA设置条件断点,因为je解密已经完成,接下来就该跳转到解密后的程序EP,宝蓝Delphi入口点程序格式如下。
在这里插入图片描述
在这里插入图片描述
如上图可知入口点有个系统调用,这个系统调用前的格式取决于命令行是否输入的参数。我们并没有输入参数所以第一个API调用一定是上面第一图片的格式,在这个系统调用里有个GetModulHandleA的函数调用。但是这个函数并不只有一次调用,想要精准定位就需要给该API断点设置[esp+4]==0的条件,也就是参数为0。
在这里插入图片描述
断住后根据堆栈回溯,找到对应的入口点结构。根据国外大佬对的文献解释,找到壳的入口点,这里OD出现了解析错误
在这里插入图片描述
根据宝蓝Delphi入口点特征,我们定位入口点为0x958ec。
在这里插入图片描述
修复导入表
在这里插入图片描述
修复导入表后程序正常运行。
在这里插入图片描述

发布了30 篇原创文章 · 获赞 5 · 访问量 1926

猜你喜欢

转载自blog.csdn.net/AlexSmoker/article/details/104196103
今日推荐