reddiamond 发表于 2014-12-10 15:07

VB程序脱壳方法步骤(UPX->www.upx.sourceforge.net*)

本帖最后由 reddiamond 于 2014-12-10 17:27 编辑

一、软件及加壳情况:
1、软件是用VB6.0编写的,是俄罗斯人编写的福特汽车配置修改程序--ELMConfig,软件的版本为V0.2.14。
2、加壳情况:用PEid查壳是UPX->www.upx.sourceforge.net*,但有的版本报VMPoctect 2.46,有的报UPolyX v0.5*,特别是在脱壳不完全的情况下,程序能运行但再查壳时是“什么都没有发现*”。




主要是显示UPolyX v0.5*,还有一种查出显示是VMPoctect 2.46的。

分析:加壳的情况不能确定,但软件是Vb的可以确定,因此根据VB的特征寻求脱壳的方向。
二、脱壳工具的准备:
OD、LoadPE、ImportREC
三、步骤
1、确定OEP的地址
载入OD

在API函数LoadLibraryA下断

运行或F9

看加载动态链接库的情况,第一个是MSVB60.Dll

第二个是Kennal32.dll或者是USER32.dll


这时可以下ThunRTMain断点,bp ThunRTMain

断下后看堆栈,往上翻看看,会看到你喜欢的jmp ThunRTMain
记下堆栈中的数据,

然后跟随到汇编窗口,看到了OEP,但代码被偷了,注意下图


2、跟踪到OEP

如果你想直接F4过来,可能会飞。

重载入后,用LoadlibraryA下断到Kernal32.dll或User32.dll 后,不再bp ThunRTMain,Cltr+G到00407B1c.然后F4.

到这里了,OEP前一行,如果这是里Dump是不行的,改下这行让OD跳到00407b22

这样就到了OEP

改下OEP的代码,按图中改,然后Dump就可以了。


三、修复RVA
脱壳后的程序仍然不能汉化。



四、总结
1、VB编写的软件用ThunRTMain这个函数来找OEP比较容易。
2、这个软件目前是什么程序加壳的,我仍然不能确定,希望有人能帮我确定下。

软件下载地址:(待上传)百度云盘下载
(待续写)





reddiamond 发表于 2014-12-10 16:27

Ctrui 发表于 2014-12-10 15:47
一看到VB就头疼,膜拜会VB的大神

其实我其他的都不会,找OEP都不熟的,我无数次跟我这个点,因为在系统空间里,我就没有当一回事。

733935A4 >55            push ebp
733935A5    8BEC            mov ebp,esp
733935A7    6A FF         push -0x1
733935A9    68 D0973A73   push MSVBVM60.733A97D0
733935AE    68 FDBA4773   push MSVBVM60.7347BAFD
733935B3    64:A1 00000000mov eax,dword ptr fs:
733935B9    50            push eax
733935BA    64:8925 0000000>mov dword ptr fs:,esp

一看不是VB的OEP,就过了,殊不知在系统的空间会是另一个样子,是VC++的OEP

reddiamond 发表于 2015-2-9 15:45

今天又脱了一个版,发现在修改后要把程序运行到Push 00424828这一行,也就是将0407b1c改为jmp 00407b22,然后单步下,再将0407b1c改回jmp dword ptr ds:,然后Dump,否则脱壳不干净。
或者记住地址,单步到一个空代码处,重新构造一个入口:
push 00424828;
call 00407b1c;

当前行放在push 00424828

viks 发表于 2014-12-10 15:18

大婶呀,,,刚才搞脱了一半 就高不下去了,结果放弃VB

wanxia 发表于 2014-12-10 15:19

520Kelly 发表于 2014-12-10 15:30

你这个rva是怎么找到的?

Ctrui 发表于 2014-12-10 15:47

一看到VB就头疼,膜拜会VB的大神{:301_1003:}

神小白 发表于 2014-12-10 15:54

好牛逼啊!又涨姿势了

reddiamond 发表于 2014-12-10 16:20

viks 发表于 2014-12-10 15:18
大婶呀,,,刚才搞脱了一半 就高不下去了,结果放弃VB

小侄,要不你发给我看看,玩笑!

reddiamond 发表于 2014-12-10 16:22

520Kelly 发表于 2014-12-10 15:30
你这个rva是怎么找到的?

我正在查这方面的资料。
确定RVA的方法:
1、有个网友说一般是10;
2、网上有个朋友帮我脱过一个版本,能正常汉化,RVA是10;
3、我对ELMConfig进行了系列的汉化,以前的版本都是10.
所以蒙着试了下。

zeromaggot 发表于 2014-12-10 19:51

看完还是一头雾水,还得多看几次
页: [1] 2
查看完整版本: VB程序脱壳方法步骤(UPX->www.upx.sourceforge.net*)