首页
社区
课程
招聘
VB程序 ASProtect 2.11 SKE build 03.13 Release [1]壳,脱壳过程中遇到困难[求助]
发表于: 2006-8-29 11:35 5417

VB程序 ASProtect 2.11 SKE build 03.13 Release [1]壳,脱壳过程中遇到困难[求助]

2006-8-29 11:35
5417
按照前辈们的经验,两次int3后代码段设断找到OEP
00401B08  - FF25 08124000     jmp     [401208]                         ; msvbvm60.ThunRTMain
00401B0E    0000              add     [eax], al
00401B10  - E9 44E7C100       jmp     01020259
00401B15    3B82 5224C0CB     cmp     eax, [edx+CBC02452]
00401B1B    0000              add     [eax], al
00401B1D    0000              add     [eax], al
可见此为vb程序。
查看00401208,
00401000 >7354A056  msvbvm60.__vbaVarSub
00401004  7354BC18  msvbvm60.__vbaVarTstGt
.........
00401120  734649DE  msvbvm60.__vbaI2I4
00401124  00E064DC
00401128  7354BB42  msvbvm60.__vbaVarOr
.........
00401290  7351D66D  msvbvm60.rtcR8ValFromBstr
00401294  00000000
00401298  00100017
0040129C  004075EC  XXXX.004075EC
004012A0  0040762C  XXXX.0040762C
004012A4  004075F4  XXXX.004075F4
004012A8  004012B0  XXXX.004012B0
004012AC  00000000
004012B0  00000001
004012B4  00000001
004012B8  004075E6  XXXX.004075E6
确定IAT为00401000长度294,其中00401124处有加密。
找到IAT加密部分代码:
00E075EC    6933 C08A433B     imul    esi, [ebx], 3B438AC0
00E075F2    3BF0              cmp     esi, eax
00E075F4    75 5E             jnz     short 00E07654
00E075F6    EB 01             jmp     short 00E075F9
发现esi为D3,A4时不加密;1C时加密。esi=1C时手工修改esi=D3得到完整IAT
但是00E075F4    75 5E             jnz     short 00E07654处patch代码
JMP 01070000
01070000:JE 00E075F9
         CMP ESI,0D3
         JE 00E07654
         CMP ESI,0A4
         JE 00E07654
         MOV ESI,0D3
         JMP 00E07654
  报错,程序中止运行,为什么会这样???(问题一)
OS:  Advanced Server, No ServicePack
CPU: AuthenticAMD, AMD AMD Sempron(tm) Processor 2800+, MMX @ 1600 MHz

Application data:
VmVyc2lvbjogUUhGeWJtc........................
…………………………………………………………………………………………
采用手工修复IAT,继续,参照论坛上相关文章,发现程序中有不少CALL 01040000,怀疑是Call壳,(不知是否正确?问题二)补上相关代码后也没见什么效果,lordpe修复大小提示修复前后大小相同。
import修复OEP:00401b10,rav:00001000,大小:294获得输入信息成功,修复抓取文件成功。
…………………………………………………………………………………………
OD载入dumped_.exe
00401B08   $- FF25 08124000   jmp     [<&msvbvm60.ThunRTMain>]         ;  msvbvm60.ThunRTMain
00401B0E      0000            add     [eax], al
00401B10 >  - E9 44E7C100     jmp     01020259
00401B15      3B82 5224C0CB   cmp     eax, [edx+CBC02452]
00401B1B   .  0000            add     [eax], al
修改为
00401B08   $- FF25 08124000   jmp     [<&msvbvm60.ThunRTMain>]         ;  msvbvm60.ThunRTMain
00401B0E      0000            add     [eax], al
00401B10 >    68 98294000     push    00402998
00401B15      E8 EEFFFFFF     call    <jmp.&msvbvm60.ThunRTMain>
00401B1A      90              nop
00401B1B   .  0000            add     [eax], al
OEP处push 00402998  56 42 35 21 F0 1F 76 62 36 63 68 73 2E 64 6C     VB5!?vb6chs.dll
运行报错:“0x00401b08”指令引用的“0xcc401208”内存。该内存不能为“read”。终止or调试?(这是怎么回事?问题三)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
用volx的脱壳脚本试试
2006-8-29 12:24
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 fly 发布
用volx的脱壳脚本试试

用Aspr2.XX_IATfixer_v1.02.osc一番运算后提示“Import table is fixed,youcan dump the file now or later.check the address and size of IAT in log window”
查看LOG窗口: iatstartaddr: 00401000 | 逆风飞扬.<模块入口点>
              iatsize: 0000035C

继续运行脚本,Stolen codes start, press OK button to add comments
确定Commands are added
确定后停在01020259   /EB 02           jmp     short 0102025D                   ; 000401B10

000401B10和我找到的OEP一样。然后DD 00401000发现和没有运行脚本前相同,00401124处仍然加密,用Import获取输入表均显示无效。
2006-8-29 14:35
0
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
4
问题一:被检测到调试或修改
问题二:Advanced Import Protection
问题三:不晓得,才走几行就出问题?不会是push没搞对吧?
2006-8-29 22:45
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
问题一:将补丁补在00E075F2    3BF0              cmp     esi, eax就不再报错了,不知什么原因。
问题二:确实为CALL壳,避过IAT加密后,来到OEP。
查找下面代码(不在OEP段,在IAT加密段)
00E07188    8945 F0         mov     [ebp-10], eax
00E0718B    B8 00070000     mov     eax, 700
00E07190    E8 B7B3FDFF     call    00DE254C
在call处patch为jmp 010a0036
在010a0000处补代码
BA 00 10 40 00 80 3A E875 128B42 0103C283C0 053D 0000040175 03EB 0C904281FA 0040410072 E0EB FE8915 00010A0160FFE29090909090909060B8 0010400090391075 208B0D 00010A01C701 FF2500008941 0261908B15 00010A01909090EB BE9090909083C0 043D 941240007E D2EB E3
大意参考(表示感谢)+++++++++++++++++++ ASSEMBLY CODE LISTING ++++++++++++++++++
//********************** Start of Code in Object BinaryCode **************

:00000000 mov edx, 00401000             ;.code  搜?-檫始位址
:00000005 cmp byte ptr [edx], E8        ; 'E8'== CALL
:00000008 jne 0000001E
:0000000A mov eax, dword ptr [edx+01]  
:0000000D add eax, edx                              
:0000000F add eax, 00000005                    
:00000014 cmp eax, 00CE0000             <=比蒉,是否? ASPR 解瘁咄入?
:00000019 jne 0000001E
:0000001B pushad                                       
:0000001C jmp edx                       <=;咄入-ASPR 解瘁咄入?
:0000001E inc edx
:0000001F cmp edx, 0041A000             <=code 搜?-劫束位址
:00000025 jbe 00000005
:00000027 jmp 00000027
:00000029 mov ecx, 0041A000             <=Import Table   檫始位址
:0000002E cmp dword ptr [ecx], edx                     
:00000030 jne 0000004F
:00000032 mov dword ptr [00419FF0], ecx <=保存 API   入口位址
:00000038 add esp, 000000FC
:0000003E popad
:0000003F mov ebx, dword ptr [00419FF0] <=取出  API   入口位址  
:00000045 mov dword ptr [edx+02], ebx   <=修正  API    入口位址  
:00000048 mov word ptr [edx], 15FF      <=修正  OP CODE
:0000004D jmp 0000001E
:0000004F add ecx, 00000004
:00000052 cmp ecx, 0041A730             <=Import Table   劫束位址
:00000058 jl 0000002E
010a0000新建EIP运行,稍等后暂停。查看反汇编CALL壳代码已被替换。
LORDPE修复镜像大小,仍然修复前后大小相同 (新问题一)???
问题三:依旧,不是才运行就报错,第一次可以成功call,单步到后边一个call中才报错。
2006-8-30 09:21
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
问题三:仔细查看发现程序在访问CC401208,应该是00401208,把00401B08 $- FF25 08124000 jmp [<&msvbvm60.ThunRTMain>] ; msvbvm60.ThunRTMain处重新写jmp [00401208]解决。
新问题二:可能程序有自校验,运行到12fb24报错“应用程序发生异常unknown software exception (0xc0000096),位置为0x0012fb24。”
0012FB1E    14 00              adc     al, 0
0012FB20    30FB               xor     bl, bh
0012FB22    1200               adc     al, [eax]
0012FB24    6E                 outs    dx, byte ptr es:[edi]
0012FB25    3D 40007CFE        cmp     eax, FE7C0040
0012FB2A    14 00              adc     al, 0
0012FB2C    8C3B               mov     [ebx], seg?                      ; 未定义的段寄存器
0012FB2E    40                 inc     eax
0012FB2F    007CFB 12          add     [ebx+edi*8+12], bh
0012FB33    007D AE            add     [ebp-52], bh
继续学习…………………………
2006-8-30 10:05
0
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
7
最初由 女子study 发布
问题一:将补丁补在00E075F2 3BF0 cmp esi, eax就不再报错了,不知什么原因。
问题二:确实为CALL壳,避过IAT加密后,来到OEP。
查找下面代码(不在OEP段,在IAT加密段)
00E07188 8945 F0 mov [ebp-10], eax
00E0718B B8 00070000 mov eax, 700
........

patch代码用kanxue的试试。
2006-8-30 10:08
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 cyto 发布
patch代码用kanxue的试试。

恩,正在拜读kanxue大侠的《Asprotect SKE 2.2 的Advanced Import protection保护技术浅析》
2006-8-30 16:17
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
也是aspr壳,郁闷!!!
2006-8-31 10:08
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
CALL壳部分用FF15换掉FF25成功
感谢各位,继续研究15和25的问题
继续啃kanxue的大作
2006-8-31 15:41
0
游客
登录 | 注册 方可回帖
返回
//