首页
社区
课程
招聘
[原创]<记录对某壳的分析(会持续补充,欢迎讨论)>
发表于: 2017-5-13 17:47 2899

[原创]<记录对某壳的分析(会持续补充,欢迎讨论)>

2017-5-13 17:47
2899

<记录对某壳的分析(会持续补充,欢迎讨论)>

首先,该程序区段共有五个,分别为 .text,.rdata,.data,.trace,.rsrc

乍一看,没什么特别之处,即使有一个.trace区段。但是里面也没有什么有用信息,peid显示  Microsoft Visual C++ 6.0 - 8.0 [Overlay] *

EP位于.text区段

ida载入运行却会提示“必要的安全模块未加载xxxx”,然后自动退出。所以可能是有反调试。

于是Ida静态。看到头部

找不到什么有用的信息,流程图也比较庞大

只能大概看到,有两条线的出口。

继续梳理代码,发现如下部分

程序通过PEBimagebaseaddrdos头部和pe头部进行简单的字符串比较,而且代码比较规律性。这种代码很多。个人对此表示疑问。。莫非vc程序都会开始就各种获取peb然后校验pe

继续往下看,我们只需要。顺着正常流程往下看。

各种对自身内存中pe结构的校验。只要发现不符合正常pe,就直接恢复现场,然后retn结束流程。

这种地方有很多。但是大体来说。不需要去关注他。因为仅仅是对自身合法性的校验,这些代码没有任何anti-debug的迹象。

其中还使用oemid字段,xor计算出了一个数字

0x021df000,看这个数字,有些像地址,或者说缓冲区。但是里面的字节,没什么特殊,基本全是0

程序对这个缓冲区进行直观的合法性检查以后,开始使用它

仅仅是对其中的一些偏移位,进行一些判断,但是不管判断与否,不影响执行效果。

这个buffer具体用途不清楚,继续让他运行。

到这里。这两个函数是我命名的,之所以用这么个名字,是因为走到这里,基本最一开始的ida流程图快走完了。这两个函数,连续调用两次。也比较可疑。

不妨先试试进入该函数内部。

流程很吓人(尽管有一个出口点)。但是其实代码并不算太复杂,简单来说。就是根据他的参数,有三种情况,0,1,2,有且仅有这三种,否则的话,该函数草草恢复环境,然后退出。

我们之前第一次调用push 0,所以这里只需要看他为0的走向。

这里,再次使用刚才的缓冲区.0x21df000,似乎是要对他进行一些填充,不管他。但是在他附近(表达的不好,确切来说。是紧随其后),看到了这些东西。


,当时问了VV,他说这是openssl,有各种加密解密算法,什么md4md5rsa都要用。不懂这个,于是继续往下看代码。

接下来,对于这个buffer,有很多的操作,循环,那些代码。下次再分析(正在进行中)。走到这里。看到了个有意思的东西

这里通过peb取得了ProcesHeap.是要做什么呢。。。感觉会是个坑调试器的东西,

但是,不需要管他,继续往下看。

这里,用过ecx,调用了RtlAllocateHeap。似乎是想要申请内存,但是。就是这个ecx,居然还要经过一系列的运算得来,现在说他没壳,都有点不敢相信了。还是text区段里面,看来是修改过了的壳。虽然申请了内存。但是并没有着急使用。而且,接下来的代码,很多的jmp乱序(清理乱序的部分,后面会写)

一直走到这里,发现似乎调用了什么库,1.2.2,不知道是什么版本的东西,以后再分析,(未完待续)


[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//