首页
社区
课程
招聘
ASProtect v.2.0 加壳例子脱壳教程!
发表于: 2004-7-23 10:42 10702

ASProtect v.2.0 加壳例子脱壳教程!

2004-7-23 10:42
10702
Инструменты:OLLYDBG v 110
            Imprec16f
            LordPE by yoda
            
Распаковка:

Загружаем программу в OLLYDBG,
00401000 >/$ 68 01504000    PUSH blaadmeA.00405001   <----Здесь стоим мы
00401005  |. E8 01000000    CALL blaadmeA.0040100B
0040100A  \. C3             RETN
0040100B   $ C3             RETN
0040100C     70             DB 70                                    ;  CHAR 'p'
0040100D     60             DB 60                                    ;  CHAR '`'
0040100E     18             DB 18
0040100F     78             DB 78                                    ;  CHAR 'x'
00401010     93             DB 93
00401011     BE             DB BE
00401012     DC             DB DC
00401013     12             DB 12
00401014     13             DB 13
00401015     BC             DB BC
00401016     09             DB 09
00401017     4E             DB 4E                                    ;  CHAR 'N'
00401018     6A             DB 6A                                    ;  CHAR 'j'
00401019     28             DB 28                                    ;  CHAR '('
0040101A     06             DB 06
0040101B     42             DB 42                                    ;  CHAR 'B'
0040101C     EE             DB EE
0040101D     B2             DB B2
0040101E     E7             DB E7
0040101F     91             DB 91
00401020     59             DB 59                                    ;  CHAR 'Y'
00401021     CB             DB CB

Нажимаем F9(Чтобы запустить программу).Нажимаем Shift+F9(Чтобы обойти все исключения)27 раз
(если нажать 28 раз то программа запустится-а нам это не нужно).И оказываемся в этом месте :

008D6807   C700 7F0677B9    MOV DWORD PTR DS:[EAX],B977067F   <----Здесь стоим мы
008D680D   FB               STI
008D680E   2D F8868BEF      SUB EAX,EF8B86F8
008D6813   B7 FA            MOV BH,0FA
008D6815   EB 01            JMP SHORT 008D6818   <----Ставим брейкпоинт
008D6817   6967 64 8F060000 IMUL ESP,DWORD PTR DS:[EDI+64],68F
008D681E   83C4 04          ADD ESP,4
008D6821   1BC1             SBB EAX,ECX
008D6823   58               POP EAX
008D6824   A1 D8A68D00      MOV EAX,DWORD PTR DS:[8DA6D8]
008D6829   8B00             MOV EAX,DWORD PTR DS:[EAX]
008D682B   8B40 1C          MOV EAX,DWORD PTR DS:[EAX+1C]
008D682E   8945 F8          MOV DWORD PTR SS:[EBP-8],EAX
008D6831   A1 D8A68D00      MOV EAX,DWORD PTR DS:[8DA6D8]
008D6836   8B00             MOV EAX,DWORD PTR DS:[EAX]
008D6838   8B00             MOV EAX,DWORD PTR DS:[EAX]
008D683A   8945 F0          MOV DWORD PTR SS:[EBP-10],EAX
008D683D   A1 D8A68D00      MOV EAX,DWORD PTR DS:[8DA6D8]
008D6842   8B00             MOV EAX,DWORD PTR DS:[EAX]
008D6844   83C0 18          ADD EAX,18
008D6847   8945 FC          MOV DWORD PTR SS:[EBP-4],EAX
008D684A   A1 64A68D00      MOV EAX,DWORD PTR DS:[8DA664]
008D684F   8858 08          MOV BYTE PTR DS:[EAX+8],BL
008D6852   8B45 FC          MOV EAX,DWORD PTR SS:[EBP-4]
008D6855   8338 00          CMP DWORD PTR DS:[EAX],0
008D6858   75 21            JNZ SHORT 008D687B

Далее встаём на строку 008D6815 и нажимаем F2-/чтобы поставить брейкпоинт/(Нам нужно сняться
с "Access violation").Далее нажимаем Shift+F9(чтобы бряк сработал).Прервались???Снимаем брейкпоинт.
Теперь нажимаем Alt+M(чтобы открыть карту памяти).Даллее смысл таков:нужно поставить брейкпоинт
на первую секцию после PE header’a(в данном случае это 00401000).Итак нажимаем на секции 00401000
правой кнопкой мышки и выбираем Set memory breakpoint on access.Поставили???Теперь нажимаем F9 и
мы прервались на ОЕП.

00401000 >/$ 6A 00          PUSH 0   <----Здесь стоим мы
00401002  |. E8 AD020000    CALL blaadmeA.004012B4
00401007  |. A3 6C354000    MOV DWORD PTR DS:[40356C],EAX
0040100C  |. E8 9D020000    CALL blaadmeA.004012AE
00401011  |. 6A 0A          PUSH 0A
00401013  |. FF35 70354000  PUSH DWORD PTR DS:[403570]
00401019  |. 6A 00          PUSH 0
0040101B  |. FF35 6C354000  PUSH DWORD PTR DS:[40356C]
00401021  |. E8 06000000    CALL blaadmeA.0040102C
00401026  |. 50             PUSH EAX                                 ; /ExitCode
00401027  \. E8 7C020000    CALL blaadmeA.004012A8                   ; \ExitProcess
0040102C  /$ 55             PUSH EBP
0040102D  |. 8BEC           MOV EBP,ESP
0040102F  |. B8 4A104000    MOV EAX,blaadmeA.0040104A
00401034  |. 6A 00          PUSH 0                                   ; /lParam = NULL
00401036  |. 50             PUSH EAX                                 ; |DlgProc => blaadmeA.0040104A
00401037  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
00401039  |. 68 00304000    PUSH blaadmeA.00403000                   ; |pTemplate = "MyDialog"
0040103E  |. FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; |hInst
00401041  |. E8 2C020000    CALL blaadmeA.00401272                   ; \DialogBoxParamA
00401046  |. C9             LEAVE
00401047  \. C2 1000        RETN 10
0040104A  /. 55             PUSH EBP
0040104B  |. 8BEC           MOV EBP,ESP
0040104D  |. 8B45 0C        MOV EAX,DWORD PTR SS:[EBP+C]
00401050  |. 3D 10010000    CMP EAX,110

Снятие дампа:

Напомню что мы сейчас стоим на адресе 00401000.Запускаем LordPE by yoda,
выбираем в списке процессов нашу программу , кликаем на ней правой кнопкой мышки и выбираем dump full,
сохраняем-всё дамп готов.
Теперь можно закрыть OLLYDBG.

Восстановление импорта:

Запускаем Imprec16f и нашу запакованную программу.В Imprec16f выбираем в списке процессов нашу программу.
Нажимаем кнопку IAT AutoSearch.Затем нажимем кнопку Get Imports и видим что две функции не
определились.Теперь нажимаем кнопку Show Invalid(Чтобы увидеть неопределённые функции)Затем
кликаем правой кнопкой мыши на выделенных функциях и выбираем Plugin Tracers->ASProtect1.22
и Trace level1(Чтобы Imprec нашел их сам).Далее видим что теперь все функции восстановлены
(Везде написано YES).У вас тоже самое???Теперь нажимаем Fix Dump(Чтобы прикрутить наш дамп)и
выбираем тот файл который вы сохранили когда мы снимали дамп(У меня dumped.exe).Всё теперь
распакованная программа называется dumped_.exe(У вас может по другому).

На этом всё.

看样子不是很难!

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

收藏
免费 2
支持
分享
最新回复 (33)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
俄鸟文,看不懂.:o
抱一抱,吸取精华:D
2004-7-23 10:44
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
3
乱码,看不懂啊。。。

谁懂俄文,翻译一下
2004-7-23 11:19
0
雪    币: 508
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这样也有人看的懂?
2004-7-23 12:17
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
5
Ivan 老大如果有时间,看看能否简单翻译一下
2004-7-23 12:42
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我还有骗ACP的主程序脱文,不过太长了,俄文,所以没必要贴出来了,根本没有人看的懂的。
2004-7-23 13:11
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
7
鸡蛋壳懂我文?
2004-7-23 13:23
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
8
如果懂的话就翻译一下啊
2004-7-23 13:24
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我不懂,不然我就不会贴俄文贴了。
2004-7-23 13:26
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
10
俄文翻译英文: Ivan [NUKE]

Tools:OLLYDBG v 110 Imprec16f LordPE by yoda

Unpacking:

We load program in OLLYDBG,

00401000 >/$ 68 01504000 PUSH blaadmeA.00405001 <----We are here cost
00401005 |. E8 01000000 CALL blaadmeA.0040100B
0040100A \. C3 RETN
0040100B $ C3 RETN
0040100C 70 DB 70 ; CHAR 'p'
0040100D 60 DB 60 ; CHAR '`'
0040100E 18 DB 18
0040100F 78 DB 78 ; CHAR 'x'
00401010 93 DB 93
00401011 BE DB BE
00401012 DC DB DC
00401013 12 DB 12
00401014 13 DB 13
00401015 BC DB BC
00401016 09 DB 09
00401017 4E DB 4E ; CHAR 'N'
00401018 6A DB 6A ; CHAR 'j'
00401019 28 DB 28 ; CHAR '('
0040101A 06 DB 06
0040101B 42 DB 42 ; CHAR 'B'
0040101C EE DB EE
0040101D B2 DB B2
0040101E E7 DB E7
0040101F 91 DB 91
00401020 59 DB 59 ; CHAR 'Y'
00401021 CB DB CB


We press F9.We press Shift+.F9  2"of times
(if we harvest 28 times that program neglect- A to us this is not
necessary).And it is exerted in this place:

008D6807 C700 7F0677B9 MOV DWORD PTR DS:[EAX],B977067F <----We are here cost
008D680D FB STI
008D680E 2D F8868BEF SUB EAX,EF8B86F8
008D6813 B7 FA MOV BH,0FA
008D6815 EB 01 JMP SHORT 008D6818 
008D6817 6967 64 8F060000 IMUL ESP,DWORD PTR DS:[EDI+64],68F
008D681E 83C4 04 ADD ESP,4
008D6821 1BC1 SBB EAX,ECX
008D6823 58 POP EAX
008D6824 A1 D8A68D00 MOV EAX,DWORD PTR DS:[8DA6D8]
008D6829 8B00 MOV EAX,DWORD PTR DS:[EAX]
008D682B 8B40 1C MOV EAX,DWORD PTR DS:[EAX+1C]
008D682E 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
008D6831 A1 D8A68D00 MOV EAX,DWORD PTR DS:[8DA6D8]
008D6836 8B00 MOV EAX,DWORD PTR DS:[EAX]
008D6838 8B00 MOV EAX,DWORD PTR DS:[EAX]
008D683A 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
008D683D A1 D8A68D00 MOV EAX,DWORD PTR DS:[8DA6D8]
008D6842 8B00 MOV EAX,DWORD PTR DS:[EAX]
008D6844 83C0 18 ADD EAX,18
008D6847 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
008D684A A1 64A68D00 MOV EAX,DWORD PTR DS:[8DA664]
008D684F 8858 08 MOV BYTE PTR DS:[EAX+8],BL
008D6852 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
008D6855 8338 00 CMP DWORD PTR DS:[EAX],0
008D6858 75 21 JNZ SHORT 008D687B‘


Further we arise on line 008D6815 and press F2-/in order to place .Further we press Shift+.F9.They did interrupt???We remove point.
Now we press Alt+.M. sense is such:it is necessary to place point in the first section after PE header'.a(v this case of this 00401000).Thus we press in section 00401000 by right button of mouse and we select Set memory point on access.They did place???Now we press F9 and we interrupted on OYEP

00401000 >/$ 6A 00 PUSH 0 
00401002 |. E8 AD020000 CALL blaadmeA.004012B4
00401007 |. A3 6C354000 MOV DWORD PTR DS:[40356C],EAX
0040100C |. E8 9D020000 CALL blaadmeA.004012AE
00401011 |. 6A 0A PUSH 0A
00401013 |. FF35 70354000 PUSH DWORD PTR DS:[403570]
00401019 |. 6A 00 PUSH 0
0040101B |. FF35 6C354000 PUSH DWORD PTR DS:[40356C]
00401021 |. E8 06000000 CALL blaadmeA.0040102C
00401026 |. 50 PUSH EAX ; /ExitCode
00401027 \. E8 7C020000 CALL blaadmeA.004012A8 ; \ExitProcess
0040102C /$ 55 PUSH EBP
0040102D |. 8BEC MOV EBP,ESP
0040102F |. B8 4A104000 MOV EAX,blaadmeA.0040104A
00401034 |. 6A 00 PUSH 0 ; /lParam = NULL
00401036 |. 50 PUSH EAX ; |DlgProc => blaadmeA.0040104A
00401037 |. 6A 00 PUSH 0 ; |hOwner = NULL
00401039 |. 68 00304000 PUSH blaadmeA.00403000 ; |pTemplate = "MyDialog"
0040103E |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |hInst
00401041 |. E8 2C020000 CALL blaadmeA.00401272 ; \DialogBoxParamA
00401046 |. C9 LEAVE
00401047 \. C2 1000 RETN 10
0040104A /. 55 PUSH EBP
0040104B |. 8BEC MOV EBP,ESP
0040104D |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
00401050 |. 3D 10010000 CMP EAX,110


Removal of the dump:

Will resemble that we is now cost on address 00401000.We start LordPE by yoda,
we select in the list of processes our program,  on it by the right button of mouse we select dump full,
preserve- all dump is ready.
Now it is possible to shut OLLYDBG.

Restoration of the import:

We start Imprec16f and our packed program.In Imprec16f we select in the list of processes our program.
We press button IAT AutoSearch.Then nazhimem button Get Imports and we see that two functions they
were not determined.Now we press button Show Invalid  with the right button of mouse on the chosen
functions and we select Plugin Tracers->.ASProtect1.22 and Trace
level1.We further see that now all functions they are restored (is everywhere
written YES).In you also the very???Now press Fix Dump i we select that file
which you they preserved when we was removed damp(U me dumped.exe).Entire now unpacked program is called dumped _.exe(U you can on other).

On this everything.

:D
2004-7-23 13:29
0
雪    币: 303
活跃值: (476)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不象2。0;)
2004-7-23 13:46
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不清楚,反正文章标题就是ASPR 2.0的,有加壳例子,不过下不下来了。
2004-7-23 13:47
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
13
这个是ASProtect V2.0不?
倒是比较象ASProtect V1.2X  ;)
2004-7-23 14:28
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
最初由 fly 发布
这个是ASProtect V2.0不?
倒是比较象ASProtect V1.2X ;)


不要看内容有个1.2x的插件就以为是ASPR1.2X,我也没调试过2.0,但是标题的确是写ASPR 2.0,并且还贴到论坛里,还有不少人回复,所以应该不会是愚人节吧。呵呵
2004-7-23 14:35
0
雪    币: 398
活跃值: (1078)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
15
最初由 鸡蛋壳 发布
我还有骗ACP的主程序脱文,不过太长了,俄文,所以没必要贴出来了,根本没有人看的懂的。


ACP 用的着骗吗?  hehe
2004-7-23 15:03
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
16
最初由 鸡蛋壳 发布


不要看内容有个1.2x的插件就以为是ASPR1.2X,我也没调试过2.0,但是标题的确是写ASPR 2.0,并且还贴到论坛里,还有不少人回复,所以应该不会是愚人节吧。呵呵


看其内容
新版aspr很少能用Imprec直接修复输入表的
2004-7-23 15:09
0
雪    币: 239
活跃值: (544)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
17
最初由 鸡蛋壳 发布
我还有骗ACP的主程序脱文,不过太长了,俄文,所以没必要贴出来了,根本没有人看的懂的。


有骗ACP 呵呵!

到底是ASP1.2X来中ASP2.0我想只有蛋壳知道吧!呵呵!
2004-7-23 15:25
0
雪    币: 266
活跃值: (269)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
18
如果“2.0的壳”就这样被搞定,aspr的作者真的该大笑一场。:D
2004-7-23 15:58
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
19
最初由 jingulong 发布
如果“2.0的壳”就这样被搞定,aspr的作者真的该大笑一场。:D


QQ和mail都没用?怎么一个也没回复?
2004-7-23 17:22
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
最初由 jingulong 发布
如果“2.0的壳”就这样被搞定,aspr的作者真的该大笑一场。:D


看样子,人家是在搞愚人节吧。HOHO
2004-7-23 17:34
0
雪    币: 266
活跃值: (269)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
21
最初由 fly 发布



QQ和mail都没用?怎么一个也没回复?


别人的机器,原谅阿
2004-7-23 17:44
0
雪    币: 229
活跃值: (50)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
22
我看过 Ricardo Narvaja 他们 team 的某个成员所写的一篇Aspr2.0 的教程也是用IR就搞定了 import table , 当然它在加壳时并没把 import table 搞花了 ,所以看来和 1.23rc4 差不多。试试 Awave studio 9.1.
2004-7-24 10:53
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
终于有人出来给了一个口实
2004-7-24 12:47
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
24
最初由 VolX 发布
我看过 Ricardo Narvaja 他们 team 的某个成员所写的一篇Aspr2.0 的教程也是用IR就搞定了 import table , 当然它在加壳时并没把 import table 搞花了 ,所以看来和 1.23rc4 差不多。试试 Awave studio 9.1.


呵呵,加壳时选项很重要  ;)
2004-7-24 13:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
@VolX
hi good to see u again...did u receive a pm from me from DFCG about armadillo import table elimination???
can u give me ur email...i would like to know how u fix the import table elimination in armadillo...because now a lot of program start using this protection....
2004-7-24 16:54
0
游客
登录 | 注册 方可回帖
返回