moocher 发表于 2021-12-14 21:13

手动脱PC-guard壳记录【VB】

主要用到的软件
OD
LordPE
Import REC

辅助软件
exeinfo


1,程序拖入exeinfo查壳


显示是pc guard

2,OD打开

标准的PC guard入口

3,找寻OEP
试验过各种办法,最后发现这个壳用2次内存法中断最快,能直接找到OEP位置
A,alt+m进入内存窗口,在数据段F2,

F9运行

在这里被中断。
B,alt+m进内存窗口,在代码段下F2


F9运行
直达OEP位置4018F4

右击,从模块中删除分析,显示更直观

标准的VB入口点

4,dump程序
停在OEP位置,打开LordPE开始dump【为啥要停在这里?运行起来不行么?】

完整转存【默认设置】,总所周知,转存完是直接运行不了滴


5,修复import table
老规矩,OD还在OEP位置中断的
打开import reconstructor 1.7
下拉选择程序,
填入OEP位置:18F4(相对地址)


按1234顺序,
顺利获得vb函数表


然后点转存到文件,选择之前dump下来的程序,流程完毕。
准备庆祝....
啊哦xxx


6,寻找问题原因...

exeinfo显示没识别VB

OD打开

入口在VB的OEP位置
看看import table在不在

OD显示添加的在这个位置,63000开始

看看这个地址是啥东西,我去,咋就一个光头司令【vb6.dll】


6,折腾半天了【其实已经折腾几天了】,换个英文版的软件试试

显示导入成功
再试

还是熟悉的味道。

OD看看表有了没



这个就尴尬了。。。。


moocher 发表于 2021-12-16 20:44

I have read a couple of tutorials regarding PC Guard, and I followed them and
found OEP and fixed the imports easily, but when I tried to use my dump it was
unusable, the application always crash when I wanted to use some functions. So I traced
my dump and found out where application was crashing. It crashed on a call to virtual
memory. I tried different options to dump that section and add it to my dump. I also fixed
it to a correct offset, but application always crash. So traced original to that call and find
out that PC Guard decrypts code on the fly and just before the RET command there is
another call that encrypts it again. So to properly dump it we have to trace original and
after it decrypts its code we need to binary copy and paste it to our dump and NOP
decrypts and encrypts calls.


翻到一篇相关说明,得慢慢琢磨了...

moocher 发表于 2021-12-17 11:13

上面的问题应该是程序跑起来后才会有这个问题。
目前的情况是程序还在加载中就报错,函数还没调用。
今天看了下dump后的程序。比较了下原始程序
差别在eax edx   等寄存器的数据不一样,
感觉是这里导致程序直接崩溃。
测试下来未脱壳程序根本不会跑到崩溃的那个地址

moocher 发表于 2021-12-14 22:41

第一张图咋跑最后去了{:1_896:}

Hmily 发表于 2021-12-15 11:36

你去看看那个奔溃的地址是什么内容,然后看看原始没脱壳的文件,那个地址对应的内容是什么,另外这是啥壳?用exeinfo pe查一下

moocher 发表于 2021-12-15 11:44

本帖最后由 moocher 于 2021-12-15 12:06 编辑

Hmily 发表于 2021-12-15 11:36
你去看看那个奔溃的地址是什么内容,然后看看原始没脱壳的文件,那个地址对应的内容是什么,另外这是啥壳? ...
壳在最后一张图,PC guard

直接在455177上下断
程序异常退出

Hmily 发表于 2021-12-15 14:21

moocher 发表于 2021-12-15 11:44
壳在最后一张图,PC guard

直接在455177上下断


把od的忽略异常功能取消,看哪地方往那个地址写了,异常会自动中断。

moocher 发表于 2021-12-15 15:05

Hmily 发表于 2021-12-15 14:21
把od的忽略异常功能取消,看哪地方往那个地址写了,异常会自动中断。

忽略异常全部不选,
F9,没断下来。
这个位置应该是资源区
软件刚加载完dll文件,应该是初始化资源没过

Hmily 发表于 2021-12-15 17:00

moocher 发表于 2021-12-15 15:05
忽略异常全部不选,
F9,没断下来。
这个位置应该是资源区


strongod的忽略异常功能也取消。

moocher 发表于 2021-12-15 18:28

Hmily 发表于 2021-12-15 17:00
strongod的忽略异常功能也取消。

断下来的地方就是455177
访问违规,正在写入内存xxxxxx

再shif+F9,提示
调试的程序无法处理异常。

再按就中断退出了

Hmily 发表于 2021-12-15 19:07

moocher 发表于 2021-12-15 18:28
断下来的地方就是455177
访问违规,正在写入内存xxxxxx



所以你需要再调试原版程序,看看这个地方原版是咋回事,对比分析。

moocher 发表于 2021-12-15 22:06

Hmily 发表于 2021-12-15 19:07
所以你需要再调试原版程序,看看这个地方原版是咋回事,对比分析。

好的,大概看了下这部分代码不一样,不知道什么原因引起的
页: [1] 2
查看完整版本: 手动脱PC-guard壳记录【VB】