评论:炮轰的感觉不是从开箱传奇的unpackme非常不同。最明显的是,有很多例外。他们大多是固定的模式诠释3解码。因为一开始,我打算跟踪整个过程,所以我想改变,从身边的垃圾代码这边的IDC脚本,写脚本代码粘贴ollyscript WinHex acprotect_fixed.exe WinHex。






此次炮击事件是感觉不到的,开箱传奇的unpackme非常不同。最明显的是,有很多例外。他们大多是固定的模式诠释3解码。因为在一开始,我们计划跟踪整个过程,所以我们修改和从侧边的垃圾代码删除ollyscript IDC脚本,写剧本,paste WinHex的acprotect_fixed.exe代码acprotect_fixed.exe,使用IDA加载文件|加载负荷。



如果所有的异常都是在忽略ollydbg110c,运行时间:







1。关于int 3解码



shell中有大量int 3解码,并且使用相同的调用模式执行一个侧的解决方案:







在INT 3她(下一个div 0例外也是相同的SEH),当异常代码是0x80000003,新值设置在dr0-dr3,即4的硬件执行断点设置,这是接近的位置为3。这可以触发4个例外,通过执行这4句话如果F7。在这里,她将不会执行。







当异常是由上面的4个断点引起的:



每个异常设置一个寄存器,必须执行4个异常处理,否则寄存器没有正确的值,下面的解码将失败。







在异常处理完成后,解码开始。格式相同,寄存器不同。在这里您可以得到起始地址。







在锦州地址F4,然后看用在前面登记的价值,减去1是解码端地址。





在解决方案之后,遵循div 0异常。只有反调试函数,直接跳转可以。





2。避免IAT加密



在第十六个3的解码过程,IAT加密是隐藏的。事实上,在使用状态栏,你可以看到很多DLL装载这附近。



4检查以确定是否有特殊的处理,当你获取API GetProcAddress的地址,开始检查。这是一个特殊的API

















评论:炮轰的感觉不是从开箱传奇的unpackme非常不同。最明显的是,有很多例外。他们大多是固定的模式诠释3解码。因为一开始,我打算跟踪整个过程,所以我想改变,从身边的垃圾代码这边的IDC脚本,写脚本代码粘贴ollyscript WinHex acprotect_fixed.exe WinHex。






是否为MessageBoxA或RegisterHotKey(这种罕见的J)是取代API地址。





以下检查是否DLL的地址映射是kernel32.dll、user32.dll。





它不在这里检查,也不做。保存API地址直接IAT。否则:



写IAT:





随着这段脚本,补丁滴跳4下,打破了整个DLL,并使用importrec获得完整的IAT,所有有效的。









尺寸= 6e3828 - 6e3140 = 6e8





注意,OEP是错误的在这个时候。但IAT已经得到它了。先救树。





三.寻找OEP



当你得到IAT,试图忽略所有的例外,在这里你可以在OllyDbg。试试,关闭其他的例外,只留下智力3,和shift-f9跑60次。这一步是不尽的。来吧,让我们改变的力量第一。



简单地说,在执行当前脚本停止之后,所有异常都将被忽略。



















评论:炮轰的感觉不是从开箱传奇的unpackme非常不同。最明显的是,有很多例外。他们大多是固定的模式诠释3解码。因为一开始,我打算跟踪整个过程,所以我想改变,从身边的垃圾代码这边的IDC脚本,写脚本代码粘贴ollyscript WinHex acprotect_fixed.exe WinHex。






1)406edc,回到壳





返回shell代码,所以这是由被盗代码发出的调用。







2)46261c,回到壳







3)读操作中断







4)462634,返回贝壳





这里的代码也可以导致异常。先拆下内存访问断点,以73cedd集。内存访问断点是破碎后恢复。

5)读操作中断







6)在462634中,它是一个第四步处理的循环吗









7)J的到来







这是虚假的OEP。下面的空间是有限的。正如你所看到的,电话中偷来的代码:

406edc,46261c,462634(2次)。



在转储窗口中看到:





应4d9de4 OEP。