首页
社区
课程
招聘
[原创]手脱ASProtect第二篇---OEP 抽取
发表于: 2006-4-12 09:14 17523

[原创]手脱ASProtect第二篇---OEP 抽取

2006-4-12 09:14
17523

【脱壳文件】图标制作工具
【下载地址】http://iconutils.com/iconxp/iconxp.zip
【加壳方式】ASProtect 2.2 SKE -> Alexey Solodovnikov
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教
【调试环境】:Win2003、OllyDBD、PEiD、LordPE、ImportREC
【脱壳过程】:一鼓作气,再脱一个带OEP抽取的ASProtect吧。
        一、避开加密,得到完整IAT
       这个程序没有任何异常,F9一下,程序界面全出来了,应该是2.2的版本了吧。那我们换个方法,OD忽略所有异常,bp GetModuleHandleA,过两次后取消断点,Alt+F9返回。

00F9E4AC    85C0            TEST EAX,EAX                             ; kernel32.7C800000
00F9E4AE    75 07           JNZ SHORT 00F9E4B7
00F9E4B0    53              PUSH EBX
00F9E4B1    FF95 F0314400   CALL DWORD PTR SS:[EBP+4431F0]
00F9E4B7    8985 4D294400   MOV DWORD PTR SS:[EBP+44294D],EAX
00F9E4BD    C785 51294400 0>MOV DWORD PTR SS:[EBP+442951],0
00F9E4C7    8B95 D8304400   MOV EDX,DWORD PTR SS:[EBP+4430D8]
向下找到这里:
……
00F9E5C9    C2 0C00         RETN 0C
00F9E5CC    68 00000000     PUSH 0
00F9E5D1    C3              RETN       //在这里F4下来
00F8887A    8D5424 04       LEA EDX,DWORD PTR SS:[ESP+4]
00F8887E    E8 B1750000     CALL 00F8FE34
00F88883    E8 5C700000     CALL 00F8F8E4
00F88888    8BC3            MOV EAX,EBX
00F8888A    E8 61A3FEFF     CALL 00F72BF0
00F8888F    E8 10F0FFFF     CALL 00F878A4     //这里进去
00F88894    83C4 28         ADD ESP,28
00F88897    5D              POP EBP
00F88898    5F              POP EDI
00F88899    5E              POP ESI
00F8889A    5B              POP EBX
00F8889B    C3              RETN
00F60241    55              PUSH EBP      //这里下个硬断点,下次直接就到这里了。
00F60242    BD 262B4800     MOV EBP,482B26
00F60247    BD DE8D4800     MOV EBP,488DDE
00F6024C    8BEC            MOV EBP,ESP
00F6024E    E9 C7010000     JMP 00F6041A
00F60253    81D0 B693A431   ADC EAX,31A493B6
00F60259    FF35 0CB15500   PUSH DWORD PTR DS:[55B10C]
00F6025F    B8 16334900     MOV EAX,493316
00F60264    034424 38       ADD EAX,DWORD PTR SS:[ESP+38]
00F60268    58              POP EAX
00F60269    E9 460B0000     JMP 00F60DB4
00F6026E    C3              RETN
00F93B84    55              PUSH EBP
00F93B85    8BEC            MOV EBP,ESP
00F93B87    81C4 F8FEFFFF   ADD ESP,-108
00F93B8D    53              PUSH EBX
00F93B8E    56              PUSH ESI
00F93B8F    57              PUSH EDI
00F93B90    8B55 14         MOV EDX,DWORD PTR SS:[EBP+14]
00F93B93    8B5D 08         MOV EBX,DWORD PTR SS:[EBP+8]
00F93B96    8DBD FAFEFFFF   LEA EDI,DWORD PTR SS:[EBP-106]
00F93B9C    8BC2            MOV EAX,EDX
00F93B9E    48              DEC EAX
00F93B9F    83E8 02         SUB EAX,2
00F93BA2    0FB630          MOVZX ESI,BYTE PTR DS:[EAX]
00F93BA5    8B45 10         MOV EAX,DWORD PTR SS:[EBP+10]
00F93BA8    83E8 02         SUB EAX,2
00F93BAB    0FB600          MOVZX EAX,BYTE PTR DS:[EAX]
00F93BAE    3B43 2C         CMP EAX,DWORD PTR DS:[EBX+2C]
00F93BB1    76 06           JBE SHORT 00F93BB9
00F93BB3    8943 2C         MOV DWORD PTR DS:[EBX+2C],EAX
00F93BB6    EB 01           JMP SHORT 00F93BB9
00F93BB8    6933 C08A433B   IMUL ESI,DWORD PTR DS:[EBX],3B438AC0
00F93BBE    3BF0            CMP ESI,EAX
00F93BC0    75 5E           JNZ SHORT 00F93C20                   //这里开始PATCH
00F93BC2    EB 01           JMP SHORT 00F93BC5
00F93BC4    C7              ???                                      
改为:JMP f60000(你申请到的内存地址)

[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 7
支持
分享
最新回复 (44)
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
2
支持!
2006-4-12 09:21
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
不错
继续进步
2006-4-12 09:45
0
雪    币: 319
活跃值: (2459)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
4
支持一下。
2006-4-12 10:20
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个程序的ESI值有四种情况,E3,A4,30,E7,其中E7,A4两种情况不加密,E3-->E7 ,30-->A4

如何跟得这4种情况?
如何得知其中那些是不加密的?
谢谢
2006-4-12 15:36
0
雪    币: 279
活跃值: (145)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
6
谢谢大家的鼓励!

00F93B84    55              PUSH EBP
00F93B85    8BEC            MOV EBP,ESP
00F93B87    81C4 F8FEFFFF   ADD ESP,-108
00F93B8D    53              PUSH EBX
00F93B8E    56              PUSH ESI
00F93B8F    57              PUSH EDI
00F93B90    8B55 14         MOV EDX,DWORD PTR SS:[EBP+14]
00F93B93    8B5D 08         MOV EBX,DWORD PTR SS:[EBP+8]
00F93B96    8DBD FAFEFFFF   LEA EDI,DWORD PTR SS:[EBP-106]
00F93B9C    8BC2            MOV EAX,EDX
00F93B9E    48              DEC EAX
00F93B9F    83E8 02         SUB EAX,2
00F93BA2    0FB630          MOVZX ESI,BYTE PTR DS:[EAX]
00F93BA5    8B45 10         MOV EAX,DWORD PTR SS:[EBP+10]
00F93BA8    83E8 02         SUB EAX,2
00F93BAB    0FB600          MOVZX EAX,BYTE PTR DS:[EAX]
00F93BAE    3B43 2C         CMP EAX,DWORD PTR DS:[EBX+2C]
00F93BB1    76 06           JBE SHORT 00F93BB9
00F93BB3    8943 2C         MOV DWORD PTR DS:[EBX+2C],EAX
00F93BB6    EB 01           JMP SHORT 00F93BB9
00F93BB8    6933 C08A433B   IMUL ESI,DWORD PTR DS:[EBX],3B438AC0
00F93BBE    3BF0            CMP ESI,EAX  //这里下断点,就可以跟踪了,对照着输入表位置看指针名出来了没有就可以知道是否加密了.
00F93BC0    75 5E           JNZ SHORT 00F93C20                  
00F93BC2    EB 01           JMP SHORT 00F93BC5
00F93BC4    C7              ???
2006-4-12 16:15
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
支持一下。
2006-4-12 16:16
0
雪    币: 175
活跃值: (2621)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
支持,这个壳不好脱。
2006-4-12 17:06
0
雪    币: 37
活跃值: (1925)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
支持,这个壳不好脱
2006-4-12 19:01
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习了,我在
搜索一下83,C4,28,5D,5F,5E,5B,C3 ,有两处,在第二处下断点

程序出错
2006-4-12 19:36
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
11
支持一下。
2006-4-12 20:36
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
最初由 pendan2001 发布
支持一下。

哈哈,兄弟从good到支持了啊
2006-4-12 20:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
011A0023    75 03           JNZ SHORT 011A0028
011A0025    EB 0C           JMP SHORT 011A0033
011A0027    90              NOP
011A0028    42              INC EDX
011A0029    81FA 00B05500   CMP EDX,55B000
011A002F  ^ 72 DE           JB SHORT 011A000F
011A0031  - EB FE           JMP SHORT 011A0031
011A0033    8915 00011A01   MOV DWORD PTR DS:[11A0100],EDX
011A0039    60              PUSHAD
011A003A    FFE2            JMP EDX
011A003C    90              NOP
011A003D    90              NOP
011A003E    90              NOP
011A003F    90              NOP
011A0040    90              NOP
011A0041    90              NOP
011A0042    90              NOP
011A0043    90              NOP
011A0044    B8 A4415600     MOV EAX,5641A4
011A0049    90              NOP
011A004A    3910            CMP DWORD PTR DS:[EAX],EDX
011A004C    75 23           JNZ SHORT 011A0071
011A004E    8B0D 00011A01   MOV ECX,DWORD PTR DS:[11A0100]
011A0054    C701 FF250000   MOV DWORD PTR DS:[ECX],25FF
011A005A    8941 02         MOV DWORD PTR DS:[ECX+2],EAX
011A005D    61              POPAD
011A005E    90              NOP
011A005F    8B15 00011A01   MOV EDX,DWORD PTR DS:[11A0100]
011A0065    90              NOP
011A0066    90              NOP
011A0067    90              NOP
011A0068  ^ EB BE           JMP SHORT 011A0028
011A006A    90              NOP
011A006B    90              NOP
011A006C    90              NOP
011A006D    90              NOP
011A006E    90              NOP
011A006F    90              NOP
011A0070    90              NOP
011A0071    83C0 04         ADD EAX,4
011A0074    3D 404A5600     CMP EAX,564A40
011A0079  ^ 7E CF           JLE SHORT 011A004A
011A007B  ^ EB E0           JMP SHORT 011A005D
011A007D    90              NOP

大大我有几点不明白:
1:你代码里的
“              CMP EDX,55B000   
    MOV EAX,5641A4
  CMP EAX,564A40”   “
那些55B000 ,5641A4,564A40是从哪里来的~~~
2:在你的网络优盘中下载的脱壳破解后文件为什么还提示注册?
2006-4-12 22:34
0
雪    币: 1022
活跃值: (31)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
支持,收藏
2006-4-12 22:35
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
15
最初由 xwqgsterry 发布
2:在你的网络优盘中下载的脱壳破解后文件为什么还提示注册?
........


只是脱壳
破解自己破去
2006-4-13 00:23
0
雪    币: 229
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
文章名字有歧义,猛一看还以为是讲 OEP 如何抽取或如何还原的呢!
2006-4-13 00:31
0
雪    币: 280
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
17
向前辈学习,能不能把偷代码还原的方法再说的详细点,有好多地方的原理都不懂。
2006-4-13 02:18
0
雪    币: 280
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
18
2006-4-13 04:26
0
雪    币: 279
活跃值: (145)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
19
最初由 xwqgsterry 发布
1:你代码里的
“ CMP EDX,55B000
MOV EAX,5641A4
CMP EAX,564A40” “
那些55B000 ,5641A4,564A40是从哪里来的~~~

55b000  是代码段结束地址
5641A4  是输入表开始地址
564A40  是输入表结束地址
2006-4-13 07:54
0
雪    币: 279
活跃值: (145)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
20
最初由 thdzhqg 发布
向前辈学习,能不能把偷代码还原的方法再说的详细点,有好多地方的原理都不懂。


我学破解还没半年呢,还是菜菜,原理偶也不懂,只是依样画葫芦而已.
2006-4-13 07:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
最初由 linex 发布
55b000 是代码段结束地址
5641A4 是输入表开始地址
564A40 是输入表结束地址


哈哈,明白了,谢谢。。
我学了1个礼拜了,什么都不懂,真想放弃了,不过还是努力把~~~
2006-4-13 12:37
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
22
1.且不要关OD,把F40000到1430000的所有区段都保存下来,一共二十多个,都保存下来,再用LODEPE装配进DUMP后的文件中。(高手莫笑啊,这样为了保险,再费事也总比一句一句猜代码省事吧)

请问怎么样确认那些是Stolen Code的区段??
2006-4-23 06:31
0
雪    币: 279
活跃值: (145)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
23
这些区段里很多是API的变形代码,我只是为了省事把所有区段全部DUMP,如果你能跟踪一下会找到那些Stolen Code区段的,我觉得如果你只是要能运行,那你就全DUMP下来,不用分析,如果想完美一些,那就修复一下 Code Stolen.具体做法因人而异.
2006-4-23 08:05
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
24
你的意思是把所有的都dump出来?
2006-4-23 08:15
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
25
因为我看了下你脱壳的文件
新加了好多区段
我就是想搞清楚这些区段是怎么来的?
为什么不dump其他的呢?
2006-4-23 08:16
0
游客
登录 | 注册 方可回帖
返回
//