ACProtect壳2.0版本的分析

来源:互联网 发布:c语言文件读写 编辑:程序博客网 时间:2024/05/19 17:57

随着壳的更新,保护技术也在不断的更新,那么我们在这里分析下2.0版本的ACP壳。

我们在将程序载入OD之后。选择SOD的OD隐藏,然后选择取消内存访问忽略,开始shift+F9,还是上次的程序,来到了int1,然后找到E句柄,数据窗口跟随,下断,shift+F9,下断,然后再次shift+F9 下断,然后再次shift+F9,然后取消所有的断点,点击M,00401000,F2下断,shift + F9 运行,来到OEP,然后这里就出现了VB程序的尴尬之处,我们只需要将我们来到的这一行改为push 左下第二行的数值,然后call 往上数第一个jmp就行。然后脱壳,修复资源就OK了。

接下来这个程序,也是一个ACP壳,但是经过我们的测试,无论是通过取消int3忽略,还是取消忽略内存,都没有办法将程序断下来,这时候就需要利用在API上下断来尝试将程序断下来。这里就提到一个函数,GetCurrentProcessId ,获取当前进程的函数,在这里下断,然后F9运行断下来。此时用lordpe查询OD进程的pid,在这里我们查到的是6DC,修改完毕,然后对函数GetModuleHandleA进行下断,获取一个程序的模块句柄,然后我们在内存code段按F2下断,F9运行,来到NAG窗口,确定后点击直到来到OEP。脱壳修复,我们发现无效指针,尝试等级三修复,这里需要注意下,原版是可以修复成功的,但我们的好像并不能修复成功,会造成卡死现象。这里有一个方法就是我们双击这个函数,可以尝试输入messagebox,然后手动修复。可惜对我们来说还是有点难,所以,我们来尝试直接剪切掉,看能不能运行,剪切掉以后,发现可以正常运行。那么,脱壳成功。

另类破解ACP壳:
在这次脱壳中,我们发现这个壳其实还是很调皮的,当我们隐藏OD、设置不忽略int3中断之后,满怀信心的shift+F9了。结果发现,程序跑飞了。然后得从头再来,一样的步骤,再次尝试shift+F9,看最终结果,感觉就跟打游戏的时候BOSS随机爆装备一样,运气好了,它断下来了,运气不好,断不下来,推倒再来。好,废话不多说,我们断下来之后,寻找SE句柄,数据窗口跟随,然后下断。shift+F9,下断,shift+F9,下断,shift+F9,取消所有断点,然后直接到达retn。到了retn之后利用传说中的内存下断,再次shift+F9,shift+F9 ,到达壳给的虚假OEP,记住这个地址,因为,如果我们忘记了它,他会在以后告诉我们一个恐怖的故事(真抱歉,少年,我把真皮手铐忘在家里了)记下这个地址之后,重载程序,利用ESP定律法,下断,然后利用最后一次异常法,来判断程序真正的OEP,经过测试,发现经过15次之后程序会跑飞,那么来到第14次,记住这个真正的OEP,因为,
它会让我们爽到不能呼吸(只要998,风女带回家)。然后lordPE来转存,转存完毕之后进行修复,这时候,就要填虚假的OEP,我们不能表现出已经知道真正的OEP在哪,我们要假装不知道,让它觉得我们上当了,然后获取输入表,查找无效函数,一套三级的修复,让它完成大部分的修复,然后趁它不备,一个剪切丢它身上,回头转存(真男人,从不回头看爆炸)。这时候,我们满怀期待的打开了修复完的程序(计分板),发现,得,自信回头了,丝血逃生,程序打不开。这时候,队友绝望地打出了GG,对面打出了:真抱歉,少年,我把真皮手铐忘家里了,我们愤怒的打开外挂(lordPE),勾选了大招源头追踪(PE编辑器),将入口点填上我们所知道的真正的OEP,点击保存(确认追踪),然后再次打开程序瞟了一眼(计分板),果然,一切都在意料之中,一发全屏的巨鲨强袭,完美收官。



1 0
原创粉丝点击