一个程序,被加了UPX壳。。。

结果加壳的人把UPX脱壳的关键参数都给删除掉了,我现在连脱壳都脱不掉。。。

我从网上下载了UPX最新3.91版本的壳,复制了两个UPX.exe,本来互相加壳和脱壳都没问题。

我悲惨的人生,该死的UPX壳,谁能救救我-LMLPHP

但是,我只要修改2几个字节就会变成这样

我悲惨的人生,该死的UPX壳,谁能救救我-LMLPHP

结果就是 ,2本来是加壳的,却不能被脱壳了,但是自身却仍然能运行。那句红字已经明显说过了,文件被修改过。

我改了哪里?就是这里。

我悲惨的人生,该死的UPX壳,谁能救救我-LMLPHP

我悲惨的人生,该死的UPX壳,谁能救救我-LMLPHP

一目了然。我把从0x1e0到0x214,这一共0x25个字节全部改掉了,结果,这个程序不能被UPX自己识别了。

所以,用UPX自己的脱壳工具,脱壳,失败。这是控制台程序,可能是控制台子系统,如果是Win32子系统的话,这个位置应该在0x3db,直到0x3ff,也是一共0x25个字节。

而我要脱壳的目标文件就是一个被经过这样处理的UPX加壳后的exe文件。

由于程序是ARM平台的,所以我的第一想法是手动脱壳,准备动态调试,但是问题来了除了IDA,没啥能做ARM下的汇编级调试了。WinCE似乎是没有交互WinDBG实现双机调试的功能。

我用安装好的IDA5.5调试,结果我的IDA直接找不到程序,运行程序之后IDA卡死,程序没有启动。附加程序的话,IDA同样卡死。

我用新下载的IDA6.1调试,结果效果的确好多了,能找到程序了,程序可以运行了,但是IDA也直接崩了。

结果,我看了半个下午UPX的源码,本想从 3.91 或者 UPX!上找出点什么,可是,一无所获。我真的饭桶到头了。

如果哪位高手看到的话,给我点提示吧。我要疯了。

05-23 12:54