首页
社区
课程
招聘
[求助]求教一个软件脱壳的问题(可能存在VMPoctect2.46)
发表于: 2014-11-10 21:47 9580

[求助]求教一个软件脱壳的问题(可能存在VMPoctect2.46)

2014-11-10 21:47
9580
说明:
这个程序是俄罗斯人编写的可用于福特汽车的诊断和设置程序,我想汉化,但从2.14版加壳方式采用了加密方式,现在的新版本我脱不了了,希望能得到大家的帮助,教我如何脱此壳。

本人现在能手动脱简单的压缩壳,如何脱加密壳,请多指教!

下载链接在CSDN有,我已经上传了:
http://download.csdn.net/download/jinggangshi/8122765

2014-12-9:
壳可能为双层,可能存在VMPoctect2.46

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
同顶,学习一下
2014-12-1 21:58
0
雪    币: 293
活跃值: (45)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
拿去汉化吧。这个壳还算简单,只不过垃圾指令比较多,耐心点挺容易的,如果用OD注意隐藏标题,会检测。而且VB的更容易,在ThunRTMain入口断下上层就是OEP了,修复下入口点,输入表即可。
上传的附件:
2014-12-2 14:57
0
雪    币: 396
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
非常感谢您的帮助!

我现在正在做汉化,很快汉化版会上传供车友使用!
再次感谢!

另,俄罗斯人又发了新的版本--0.2.15版,我也在作汉化准备,能否将您的脱壳方法告诉我,我想学习下手动脱壳。

我用过ESP定律、API特征等方法,甚至我花了一个多星期做单步跟踪,但可能方法不对,没有一次找到OEP,请您指点下,谢谢!
2014-12-4 14:27
0
雪    币: 293
活跃值: (45)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
上面我有讲,直接在MSVBVM60.ThunRTMain下断即可。
简单跟您说下,这个壳会经过以下过程检测调试器。
IsDebuggerPresent
CheckRemoteDebuggerPresent
CreateFileA NTICE
FindWIndowA OllyDbg
FindWindowA FileMonClass
里面垃圾代码比较多,如果不跟,对于这款软件告诉您比较简单的方法。
OD载入后在LoadLibraryA下断,F9第一次会载入MSVBVM60.DLL。

0018FF40   002402ED  /CALL 到 LoadLibraryA 来自 002402E7
0018FF44   00695DDC  \FileName = "MSVBVM60.DLL"

F9再次断在kernel32.dll
0018FF58   00C291D9  /CALL 到 LoadLibraryA
0018FF5C   00C29005  \FileName = "kernel32.dll"

这时在MSVBVM60.ThunRTMain下断,去掉LoadLibraryA断点,F9跑起来断下。
729435A4 MSVBVM60.ThunRTMain     55              push ebp
729435A5                         8BEC            mov ebp,esp
729435A7                         6A FF           push -1
729435A9                         68 20989572     push MSVBVM60.72959820
729435AE                         68 B9BCA272     push MSVBVM60.72A2BCB9
729435B3                         64:A1 00000000  mov eax,dword ptr fs:[0]
729435B9                         50              push eax

看堆栈,
0018FF40   00C710B6  ELMConfi.00C710B6
0018FF44   00424828  ELMConfi.00424828
0018FF48   00C2BB26  返回到 ELMConfi.00C2BB26 来自 ELMConfi.00C2BEE2
0018FF4C   00C2B324  返回到 ELMConfi.00C2B324 来自 ELMConfi.00C2B6E0

记下ESP+4的值,这里的上层CALL是位于解密用到的区段内,垃圾代码比较多,我并没有将入口放在这个段内。后期是可以精简掉的,现在找个位置构造一个入口就可以了。
像这样。
00696F32    68 28484200     push ELMConfi.00424828
00696F37    FF15 60124000   call dword ptr ds:[401260] ;MSVBVM60.ThunRTMain

将EIP改为00696F32,堆栈ESP = ESP+8,修复一下输入表就可以了。
2014-12-5 10:14
0
雪    币: 396
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
谢谢,谢谢!
按您的做法找到了:
0012FF88   00408284  jmp 到 MSVBVM60.ThunRTMain
0012FF8C   00CA08C4  ELMConfi.00CA08C4
0012FF90   00424F98  ELMConfi.00424F98
0012FF94   00C4F3E7  返回到 ELMConfi.00C4F3E7 来自 ELMConfi.00C4F744
0012FF98   00000000

1、我自己以前没看堆栈。
2、我的OD有问题,ThunRTMain下断不了,换OD解决。

再次感谢!
2014-12-5 15:42
0
雪    币: 396
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
还有一层壳UPolyX v0.5 *,是VMProtect2.46> By:SoySauce[U.p.K *
2014-12-6 23:23
0
雪    币: 396
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
常规的脱壳方法脱壳后程序能正常运行,但不能汉化,截图如下:
脱壳前:

脱壳后:

下面是OEP:

2014-12-9 09:43
0
雪    币: 396
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
用LoadPE的PE编辑器比较了正常可以汉化的文件和脱壳不彻底的文件,发现RVA不一样,见图:

正确的RVA:

错误的RVA:


将上图中的RVA试探性地更改为10,问题解决(暂时)。
现在查找正确的RVA的确定方法!

请大家指点下。
谢谢!
2014-12-9 14:42
0
雪    币: 204
活跃值: (329)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
要感谢坛友viden的热心帮助呀!
2014-12-9 19:13
0
雪    币: 396
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
是的,非常感谢,他的解答非常详细,给我指出了路子。
2014-12-10 00:40
0
游客
登录 | 注册 方可回帖
返回
//