首页
论坛
课程
招聘

[原创]手脱ASProtect 2.1壳

2006-4-6 10:35 19277

[原创]手脱ASProtect 2.1壳

2006-4-6 10:35
19277
【脱壳文件】EPSON打印机工具
【下载地址】http://www.ssclg.com/download/sscserve.exe
【加壳方式】ASProtect 2.1x SKE -> Alexey Solodovnikov
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教
【调试环境】:Win2003、OllyDBD、PEiD、LordPE、ImportREC
【脱壳过程】:近日论坛闲逛,遇此软件,学了N久ASPR了,正愁无软柿可捏,于是照猫画虎一番,算给我等菜鸟写个笔记吧。
           
        一、避开加密,得到完整IAT
       OD忽略除INT3外的所有异常(注意同时忽略以下所有异常前面不要选),过两次异常后在CODE段下内存断点,到这里:
004B09F0    55              PUSH EBP
004B09F1    8BEC            MOV EBP,ESP
004B09F3    83C4 F0         ADD ESP,-10
004B09F6    B8 40074B00     MOV EAX,ssc_serv.004B0740
004B09FB    E8 7C5CF5FF     CALL ssc_serv.0040667C
004B0A00    A1 70744B00     MOV EAX,DWORD PTR DS:[4B7470]
004B0A05    8B00            MOV EAX,DWORD PTR DS:[EAX]
004B0A07    E8 D43FFBFF     CALL ssc_serv.004649E0
004B0A0C    A1 70744B00     MOV EAX,DWORD PTR DS:[4B7470]
004B0A11    8B00            MOV EAX,DWORD PTR DS:[EAX]
004B0A13    BA 800A4B00     MOV EDX,ssc_serv.004B0A80                ; ASCII "SSC Service Utility"
004B0A18    E8 BB3BFBFF     CALL ssc_serv.004645D8
004B0A1D    8B0D C0754B00   MOV ECX,DWORD PTR DS:[4B75C0]            ; ssc_serv.004BC344
004B0A23    A1 70744B00     MOV EAX,DWORD PTR DS:[4B7470]
004B0A28    8B00            MOV EAX,DWORD PTR DS:[EAX]


搜索一下FF 25
找到这里
0040121C  - FF25 00D24B00   JMP DWORD PTR DS:[4BD200]                ; kernel32.CloseHandle

数据窗口到4BD200看一下:
004BD154  7C96AE65  ntdll.RtlDeleteCriticalSection
004BD158  7C95F2FC  ntdll.RtlLeaveCriticalSection
004BD15C  7C95F337  ntdll.RtlEnterCriticalSection
004BD160  7C8284E0  kernel32.InitializeCriticalSection
004BD164  7C828CFC  kernel32.VirtualFree
004BD168  7C82BEC9  kernel32.VirtualAlloc
004BD16C  7C82BC09  kernel32.LocalFree
004BD170  7C82BB92  kernel32.LocalAlloc
004BD174  7C82BB6D  kernel32.GetTickCount
004BD178  5358C7CE
004BD17C  7C82C07F  kernel32.GetVersion
004BD180  44481099
004BD184  7C82B44F  kernel32.InterlockedDecrement
004BD188  7C82B43B  kernel32.InterlockedIncrement
004BD18C  7C818EA7  kernel32.VirtualQuery
004BD190  7C82DC10  kernel32.WideCharToMultiByte
004BD194  7C82BC7C  kernel32.MultiByteToWideChar
004BD198  CDFA8D2A
004BD19C  7C817702  kernel32.lstrcpynA
004BD1A0  F92B6CBC
004BD1A4  21D669D5
004BD1A8  F915B282


输入表被加密了,重新运行程序,不忽略非法访问内存异常,忽略其他异常后大约十四次后,搜索参考字符串,找到到达IAT处理的CALL。
00E7EBF6   /EB 0A           JMP SHORT 00E7EC02
00E7EBF8   |68 E8F4E700     PUSH 0E7F4E8                             ; ASCII "85
00E7EBFD   |E8 2A62FEFF     CALL 00E64E2C
00E7EC02   \A1 1C37E800     MOV EAX,DWORD PTR DS:[E8371C]
00E7EC07    8B00            MOV EAX,DWORD PTR DS:[EAX]
00E7EC09    E8 0A8CFFFF     CALL 00E77818          //这里进去!
00E7EC0E    84C0            TEST AL,AL
00E7EC10    75 0A           JNZ SHORT 00E7EC1C
00E7EC12    68 E8F4E700     PUSH 0E7F4E8                             ; ASCII "85

进去后,找到IAT处理的CALL
00E77916    50              PUSH EAX
00E77917    56              PUSH ESI
00E77918    E8 9BFCFFFF     CALL 00E775B8              〈〈〈〈――――这里进去

再进来后开始了比较了,开始PATCH吧
00E775B8    55              PUSH EBP
00E775B9    8BEC            MOV EBP,ESP
00E775BB    81C4 F8FEFFFF   ADD ESP,-108
00E775C1    53              PUSH EBX
00E775C2    56              PUSH ESI
00E775C3    57              PUSH EDI
00E775C4    8B55 14         MOV EDX,DWORD PTR SS:[EBP+14]
00E775C7    8B5D 08         MOV EBX,DWORD PTR SS:[EBP+8]
00E775CA    8DBD FAFEFFFF   LEA EDI,DWORD PTR SS:[EBP-106]
00E775D0    8BC2            MOV EAX,EDX
00E775D2    48              DEC EAX
00E775D3    83E8 02         SUB EAX,2
00E775D6    0FB630          MOVZX ESI,BYTE PTR DS:[EAX]
00E775D9    8B45 10         MOV EAX,DWORD PTR SS:[EBP+10]
00E775DC    83E8 02         SUB EAX,2
00E775DF    0FB600          MOVZX EAX,BYTE PTR DS:[EAX]
00E775E2    3B43 2C         CMP EAX,DWORD PTR DS:[EBX+2C]
00E775E5    76 06           JBE SHORT 00E775ED
00E775E7    8943 2C         MOV DWORD PTR DS:[EBX+2C],EAX
00E775EA    EB 01           JMP SHORT 00E775ED
00E775EC    6933 C08A433B   IMUL ESI,DWORD PTR DS:[EBX],3B438AC0
00E775F2    3BF0            CMP ESI,EAX                 〈〈〈〈〈〈〈――――这里比较四种情况
00E775F4    75 5E           JNZ SHORT 00E77654             //这里开始PATCH
00E775F6    EB 01           JMP SHORT 00E775F9
PATCH:
00E775F4  - E9 078A2500     JMP 010D0000             我用内存管理插件申请到的是 10D0000处

我跟踪后发现ESI值有三种情况,BA、88、91,其中BA,91两种情况不加密,88需要改成91才能不加密。

继续PATCH:
010D0000  - 0F84 F375DAFF   JE 00E775F9
010D0006    81FE 91000000   CMP ESI,91
010D000C  - 0F84 4276DAFF   JE 00E77654
010D0012    BE 91000000     MOV ESI,91
010D0017  - E9 3876DAFF     JMP 00E77654

下面开始运行吧,跑飞了也没关系,反正我们已经拿到正确的IAT表了。

二、修复CALL XXXXXXXX。

到OEP后开始修复吧,搜索一下89,45,F0,B8,00,07,00,00 到达这里:
00E77188    8945 F0         MOV DWORD PTR SS:[EBP-10],EAX
00E7718B    B8 00070000     MOV EAX,700
00E77190    E8 B7B3FDFF     CALL 00E5254C //就这里改吧

PATCH:
00E77190  - E9 6B8E2200     JMP 010A0043


到10A0000处写上代码

010A0000    0000            ADD BYTE PTR DS:[EAX],AL
010A0002    0000            ADD BYTE PTR DS:[EAX],AL
010A0004    0000            ADD BYTE PTR DS:[EAX],AL
010A0006    0000            ADD BYTE PTR DS:[EAX],AL
010A0008    0000            ADD BYTE PTR DS:[EAX],AL
010A000A    BA 00104000     MOV EDX,401000                  \
010A000F    803A E8         CMP BYTE PTR DS:[EDX],0E8       |
010A0012    75 14           JNZ SHORT 010A0028              |  
010A0014    8B42 01         MOV EAX,DWORD PTR DS:[EDX+1]    | 
010A0017    03C2            ADD EAX,EDX                     |
010A0019    05 05000000     ADD EAX,5                       |   
010A001E    3D 00000601     CMP EAX,1060000                 |
010A0023    75 03           JNZ SHORT 010A0028              |
010A0025    EB 0C           JMP SHORT 010A0033              |
010A0027    90              NOP                             |    
010A0028    42              INC EDX                         |
010A0029    81FA 00104B00   CMP EDX,4B1000                  |
010A002F  ^ 72 DE           JB SHORT 010A000F               |
010A0031  - EB FE           JMP SHORT 010A0031              |  
010A0033    8915 00010A01   MOV DWORD PTR DS:[10A0100],EDX  |
010A0039    60              PUSHAD                          |
010A003A    FFE2            JMP EDX                         / 

//这段代码是从401000开始扫描代码段,查找CALL XXXXXX.是则跳到原CALL处执行. 
010A003C    90              NOP
010A003D    90              NOP
010A003E    90              NOP
010A003F    90              NOP
010A0040    90              NOP
010A0041    90              NOP
010A0042    90              NOP
010A0043    60              PUSHAD              //这是从原CALL处返回点,此时EDX值即为指针.
010A0044    B8 54D14B00     MOV EAX,4BD154
010A0049    90              NOP
010A004A    3910            CMP DWORD PTR DS:[EAX],EDX
010A004C    75 23           JNZ SHORT 010A0071
010A004E    8B0D 00010A01   MOV ECX,DWORD PTR DS:[10A0100]
010A0054    C701 FF250000   MOV DWORD PTR DS:[ECX],25FF
010A005A    8941 02         MOV DWORD PTR DS:[ECX+2],EAX
010A005D    61              POPAD
010A005E    90              NOP
010A005F    8B15 00010A01   MOV EDX,DWORD PTR DS:[10A0100]
010A0065    90              NOP
010A0066    90              NOP
010A0067    90              NOP
010A0068  ^ EB BE           JMP SHORT 010A0028
010A006A    90              NOP
010A006B    90              NOP
010A006C    90              NOP
010A006D    90              NOP
010A006E    90              NOP
010A006F    90              NOP
010A0070    90              NOP
010A0071    83C0 04         ADD EAX,4
010A0074    3D 00D94B00     CMP EAX,4BD900
010A0079  ^ 7E CF           JLE SHORT 010A004A
010A007B  ^ EB E0           JMP SHORT 010A005D             
010A007D    90              NOP
//这段是修复CALL XXXXX为JMP DWORD PTR DS:[XXXXX]

代码大部分是抄的,里面的NOP是为了留空的,便于以后别的程序用。
在010A000A新建EIP,F9运行一下,OK。

三、
下面就是LODEPE开始DUMP,IMR里填上OEP: 000B09F0        IATRVA: 000BD150        IATSize: 00000730修复一下。
测试一下,正常了。

【脱壳总结】:这个没有OEP抽取,而且校验不严格,比较适合菜鸟作练习用。最后感谢SYSCOM,SHOOOO,林海雪原等大侠们的脱文。

[推荐]看雪工具下载站,全新登场!(Android、Web、漏洞分析还未更新)

最新回复 (75)
林海雪原 6 2006-4-6 11:53
2
0
没有OEP抽取就是好!
堀北真希 1 2006-4-6 11:57
3
0
学习
ah007 2 2006-4-6 14:01
4
0
支持!
RegKiller 10 2006-4-6 14:15
5
0
学习,支持一下。
xingbing 2006-4-6 21:34
6
0
学习,支持楼主。
lis 2006-4-6 21:57
7
0
学习。谢谢。
have 2006-4-7 01:47
8
0
学习,支持一下。
lchhome 7 2006-4-7 09:02
9
0
到10A0000处写上我抄的代码

代码:--------------------------------------------------------------------------------
010A0000    0000            ADD BYTE PTR DS:[EAX],AL
010A0002    0000            ADD BYTE PTR DS:[EAX],AL
010A0004    0000            ADD BYTE PTR DS:[EAX],AL
010A0006    0000            ADD BYTE PTR DS:[EAX],AL
010A0008    0000            ADD BYTE PTR DS:[EAX],AL
010A000A    BA 00104000     MOV EDX,401000
010A000F    803A E8         CMP BYTE PTR DS:[EDX],0E8
010A0012    75 14           JNZ SHORT 010A0028
010A0014    8B42 01         MOV EAX,DWORD PTR DS:[EDX+1]
010A0017    03C2            ADD EAX,EDX
010A0019    05 05000000     ADD EAX,5
010A001E    3D 00000601     CMP EAX,1060000
010A0023    75 03           JNZ SHORT 010A0028
010A0025    EB 0C           JMP SHORT 010A0033
010A0027    90              NOP
010A0028    42              INC EDX
010A0029    81FA 00104B00   CMP EDX,4B1000
010A002F  ^ 72 DE           JB SHORT 010A000F
010A0031  - EB FE           JMP SHORT 010A0031
010A0033    8915 00010A01   MOV DWORD PTR DS:[10A0100],EDX
010A0039    60              PUSHAD
010A003A    FFE2            JMP EDX
010A003C    90              NOP
010A003D    90              NOP
010A003E    90              NOP
010A003F    90              NOP
010A0040    90              NOP
010A0041    90              NOP
010A0042    90              NOP
010A0043    60              PUSHAD
010A0044    B8 54D14B00     MOV EAX,4BD154
010A0049    90              NOP
010A004A    3910            CMP DWORD PTR DS:[EAX],EDX
010A004C    75 23           JNZ SHORT 010A0071
010A004E    8B0D 00010A01   MOV ECX,DWORD PTR DS:[10A0100]
010A0054    C701 FF250000   MOV DWORD PTR DS:[ECX],25FF
010A005A    8941 02         MOV DWORD PTR DS:[ECX+2],EAX
010A005D    61              POPAD
010A005E    90              NOP
010A005F    8B15 00010A01   MOV EDX,DWORD PTR DS:[10A0100]
010A0065    90              NOP
010A0066    90              NOP
010A0067    90              NOP
010A0068  ^ EB BE           JMP SHORT 010A0028
010A006A    90              NOP
010A006B    90              NOP
010A006C    90              NOP
010A006D    90              NOP
010A006E    90              NOP
010A006F    90              NOP
010A0070    90              NOP
010A0071    83C0 04         ADD EAX,4
010A0074    3D 00D94B00     CMP EAX,4BD900
010A0079  ^ 7E CF           JLE SHORT 010A004A
010A007B  ^ EB E0           JMP SHORT 010A005D
010A007D    90              NOP

--------------------------------------------------------------------------------

菜鸟想问一个问题
请问这些代码是怎么得来的?
linex 7 2006-4-7 09:16
10
0
抄自SYSCOM和林海雪原的代码.
我再加点注释吧.
lchhome 7 2006-4-7 09:39
11
0
最初由 linex 发布
抄自SYSCOM和林海雪原的代码.
我再加点注释吧.


这些代码难道都是固定的吗,只须改几个地址就可以吗?
010A0033    8915 00010A01   MOV DWORD PTR DS:[10A0100],EDX
010A004E    8B0D 00010A01   MOV ECX,DWORD PTR DS:[10A0100]
010A005F    8B15 00010A01   MOV EDX,DWORD PTR DS:[10A0100]

只要把:[10A0100]改为自己的实际地址就可以吗?
:[10A0100]是如何而来?
linex 7 2006-4-7 10:17
12
0
只是为了保存一下edx的值用的,10A0100这个地址任意找个空地方就行.
csjwaman 24 2006-4-7 10:42
13
0
支持一下。
松松 1 2006-4-7 11:32
14
0

又来一篇详细的,参照前几位大大的文章+这篇,ASPR2。1X应该不成问题了.
chasgone 2 2006-4-9 21:17
15
0
asp2.1ske的iat是不是都只要改一下esi的值就可以解决问题
落海听潮 2006-4-9 23:50
16
0
支持一个~~~!!!
shijunbaoo 2006-4-10 10:23
17
0
新手问个问题:如果软件是多重加壳,那么脱壳方法又是怎样的呢?
xwqgsterry 2006-4-10 12:26
18
0
我是来学习的~~
qqqqwwww 2006-4-10 12:31
19
0
学习,支持一下
xwqgsterry 2006-4-10 13:10
20
0
弱弱的问一局
在这句“搜索参考字符串,找到到达IAT处理的CALL。”
具体是什么操作,怎么找到CALL,怎么到达CALL,F4?F8?SHIFT+F9??
问题好多~~~
SORRY,我是菜鸟,不要让我去看书,希望大大们能指导一下~~
这样进步才快~
xwqgsterry 2006-4-10 13:21
21
0
饿。。。。
上面的我明白了,我再问一句
“进去后,找到IAT处理的CALL”
这怎么找??
上面的CALL进去后然后一直F8找这个CALL吗???
xwqgsterry 2006-4-10 13:39
22
0
。。。 又有问题了
我换个软件,一样的壳,CODE设断后。。。可是不会到
004B09F0   55               PUSH EBP
004B09F1   8BEC             MOV EBP,ESP
004B09F3   83C4 F0          ADD ESP,-10
004B09F6   B8 40074B00      MOV EAX,ssc_serv.004B0740
004B09FB   E8 7C5CF5FF      CALL ssc_serv.0040667C
004B0A00   A1 70744B00      MOV EAX,DWORD PTR DS:[4B7470]
004B0A05   8B00             MOV EAX,DWORD PTR DS:[EAX]
004B0A07   E8 D43FFBFF      CALL ssc_serv.004649E0
004B0A0C   A1 70744B00      MOV EAX,DWORD PTR DS:[4B7470]
004B0A11   8B00             MOV EAX,DWORD PTR DS:[EAX]
004B0A13   BA 800A4B00      MOV EDX,ssc_serv.004B0A80                ; ASCII "SSC Service Utility"

却到了
003FFAE7   75 1D            JNZ SHORT 003FFB06
003FFAE9   83C5 20          ADD EBP,20
003FFAEC   A1 84364000      MOV EAX,DWORD PTR DS:[403684]
003FFAF1   8078 0A 00       CMP BYTE PTR DS:[EAX+A],0
003FFAF5   75 0F            JNZ SHORT 003FFB06
003FFAF7   B8 1F000000      MOV EAX,1F
003FFAFC   E8 C32DFDFF      CALL 003D28C4
003FFB01   C1E0 02          SHL EAX,2
003FFB04   2BE8             SUB EBP,EAX
003FFB06   E8 A9D0FFFF      CALL 003FCBB4
003FFB0B   8BD8             MOV EBX,EAX
003FFB0D   833D E4B54000 00 CMP DWORD PTR DS:[40B5E4],0
003FFB14   74 15            JE SHORT 003FFB2B

为什么
???????
linex 7 2006-4-10 14:26
23
0
OEP被偷了吧
林海雪原 6 2006-4-10 16:11
24
0
最初由 chasgone 发布
asp2.1ske的iat是不是都只要改一下esi的值就可以解决问题


以前是,当前是,以后不一定是
fangwen 2006-4-10 17:32
25
0
学习,支持一下。
shijunbaoo 2006-4-11 16:34
26
0
新人问题:1、stolen code 跟IAT加密是什么关系?
    2、怎样判断是否stolen code?
linex 7 2006-4-11 17:18
27
0
1.stolen code 跟IAT加密没有什么关系吧,可以单独加stolen code,也可以单独IAT加密,也可以一起加,好像IAT加密比较容易一些.
2.主要还是靠经验吧,一般的程序头部都有一些明显特征.另外如果按我找OEP的方法在CODE下断找不到OEP很有可能就是stolen code了.
xwqgsterry 2006-4-11 21:07
28
0
最初由 linex 发布
OEP被偷了吧


...那该怎么办,有类似的参考文章看吗或是你有什么方法吗?
eyesonly 2006-4-11 21:15
29
0
支持,学习一下
shonker 2006-4-12 02:53
30
0
学习了``的确是好东西
thdzhqg 2 2006-4-12 05:19
31
0
能问两个很菜的问题吗?
1.怎么判断iat是否是加密的.
2.esi中的4个值是怎么跟踪找到的,是不是所有的都是BA、88、91这三个值.
linex 7 2006-4-12 08:00
32
0
1.请仔细看教程,输入表一般是连续的,中间用000000间隔,如果出现教程中的情况就是被加密了.
004BD174  7C82BB6D  kernel32.GetTickCount
004BD178  5358C7CE      //这个就是加密了.
004BD17C  7C82C07F  kernel32.GetVersion
004BD180  44481099     //这个也是加密了
004BD184  7C82B44F  kernel32.InterlockedDecrement
2.
00E775F2    3BF0            CMP ESI,EAX       //这里下断点.
00E775F4    75 5E           JNZ SHORT 00E77654            
00E775F6    EB 01           JMP SHORT 00E775F9

就可以跟踪了,这个程序有三个值,有的是四个值.
laomms 34 2006-4-12 10:58
33
0
好文,学习+收藏
阿飞 2006-4-12 16:24
34
0
楼主,能不能做个动画啊。。我实在看不明白。。

做个动画可能会更详细一些的。拜托了。。。。

做好后麻烦你传一个给我:

email:kmtl886@163.com
linex 7 2006-4-12 16:41
35
0
我学脱壳从来没用过动画,觉得有些问题动画说不清楚,还不如脱文来得舒服,对于您的要求只能say sorry了.
阿飞 2006-4-12 18:35
36
0
用动画加文章。是最好的。。我看的动画他们都是这么做的。那样学起来简单一点。。。
xwqgsterry 2006-4-12 20:03
37
0
linex,你还回我的问题呢。。
我的那个软件OEP出口该怎么找,具体步骤?
(我的那个IAT表没有被改掉,那找到OEP后是不是后面的步骤会简单了吗?)
thdzhqg 2 2006-4-13 01:48
38
0
最初由 linex 发布
1.请仔细看教程,输入表一般是连续的,中间用000000间隔,如果出现教程中的情况就是被加密了.
004BD174 7C82BB6D kernel32.GetTickCount
004BD178 5358C7CE //这个就是加密了.
004BD17C 7C82C07F kernel32.GetVersion
004BD180 44481099 //这个也是加密了
........

3q!
linex 7 2006-4-13 07:52
39
0
最初由 xwqgsterry 发布
linex,你还回我的问题呢。。
我的那个软件OEP出口该怎么找,具体步骤?
(我的那个IAT表没有被改掉,那找到OEP后是不是后面的步骤会简单了吗?)


带OEP抽取的请搜索特征码,2.11的搜83,C4,2C,5D,5F,5E,5B,C3,2.22的搜 83,C4,28,5D,5F,5E,5B,C3 ,具体的请参看其他文章.
IAT表没有被改掉不见得好脱,如果是VC的比DELPHI要麻烦点.
chasgone 2 2006-4-13 11:55
40
0
最初由 林海雪原 发布
以前是,当前是,以后不一定是


谢谢楼主的回答。

还有个问题要问。

代码:--------------------------------------------------------------------------------
00E77188    8945 F0         MOV DWORD PTR SS:[EBP-10],EAX
00E7718B    B8 00070000     MOV EAX,700
00E77190    E8 B7B3FDFF     CALL 00E5254C //就这里改吧

PATCH:
00E77190  - E9 6B8E2200     JMP 010A0043
--------------------------------------------------------------------------------
像shooo分析的那个nspack主程序,我发现并不是每一个代码变形都会经过这个地方,而且就算有的到了这个地方,但是到这个地方后edx的值也并不是iat(大部分都是iat),怎么办?
chasgone 2 2006-4-13 11:59
41
0
最初由 linex 发布
带OEP抽取的请搜索特征码,2.11的搜83,C4,2C,5D,5F,5E,5B,C3,2.22的搜 83,C4,28,5D,5F,5E,5B,C3 ,具体的请参看其他文章.
IAT表没有被改掉不见得好脱,如果是VC的比DELPHI要麻烦点.


带oep抽取的,搜索这个特征码 下硬件断点,或者下其它断点都断不下来,怎么办?有什么解决办法吗
林海雪原 6 2006-4-13 12:02
42
0
已经说过N遍了,共有2处,在后一个F4就可以了,以后不说了
linex 7 2006-4-13 14:37
43
0
最初由 chasgone 发布
谢谢楼主的回答。

还有个问题要问。

像shooo分析的那个nspack主程序,我发现并不是每一个代码变形都会经过这个地方,而且就算有的到了这个地方,但是到这个地方后edx的值也并不是iat(大部分都是iat),怎么办?


VC和Delphi的IAT修复方法是不同的,Delphi的程序这个PATCH点是固定的,你可以参考看雪老大的方法来修复VC.
chasgone 2 2006-4-13 17:19
44
0
谢谢你的回答,我再去试试
chasgone 2 2006-4-13 17:29
45
0
最初由 林海雪原 发布
已经说过N遍了,共有2处,在后一个F4就可以了,以后不说了


不要生气,我是菜鸟,照着你说的f4,问题解决了,呵呵
xwqgsterry 2006-4-13 20:17
46
0
最初由 linex 发布
带OEP抽取的请搜索特征码,2.11的搜83,C4,2C,5D,5F,5E,5B,C3,2.22的搜 83,C4,28,5D,5F,5E,5B,C3 ,具体的请参看其他文章.
IAT表没有被改掉不见得好脱,如果是VC的比DELPHI要麻烦点.


HOHO,我又有问题拉。
1。我以前发过一个帖子,查不出壳的一个软件,高手们都说是3重壳
破掉了第一重,按他们的方法,第二的他们说是ASPR2。11的。。。
我用你的方法搜83,C4,2C,5D,5F,5E,5B,C3,结果老是弹出一个窗口是
“不知道如何继续进行,因为内存地址9E1C3F76处是不易读取的。。。”
而用2。22的搜83,C4,28,5D,5F,5E,5B,C3却OK,跳转正常,经过两个RTN后到了
00400808    55              push ebp
00400809    8BEC            mov ebp,esp
0040080B    6A 00           push 0
0040080D    53              push ebx
0040080E    56              push esi
0040080F    33C0            xor eax,eax
00400811    55              push ebp
00400812    68 B60F4000     push 400FB6
00400817    64:FF30         push dword ptr fs:[eax]
0040081A    64:8920         mov dword ptr fs:[eax],esp
0040081D    A1 B8374000     mov eax,dword ptr ds:[4037B8]
00400822    C600 D7         mov byte ptr ds:[eax],0D7
00400825    B2 01           mov dl,1
00400827    A1 ECB03E00     mov eax,dword ptr ds:[3EB0EC]
0040082C    E8 17A9FEFF     call 003EB148

请问这是OEP吗????
呵呵,SORRY,老麻烦你~~~
附上软件下载地址http://down.52fs.com/FSmarsV2.04C.exe
(此软件是原软件,未脱壳)
linex 7 2006-4-14 09:26
47
0
oep代码被偷了,这里是ASPR层的OEP
00B402D4    6A 60           PUSH 60
00B402D6    E9 DF090000     JMP 00B40CBA
00B402DB    64:EB 02        JMP SHORT 00B402E0                       ; 多余的前缀
00B402DE    CD 20           INT 20
00B402E0    68 E4D7262C     PUSH 2C26D7E4
00B402E5    66:9C           PUSHFW
00B402E7    57              PUSH EDI
00B402E8    81CF BC76B20C   OR EDI,0CB276BC
xwqgsterry 2006-4-14 12:35
48
0
最初由 linex 发布
oep代码被偷了,这里是ASPR层的OEP
00B402D4 6A 60 PUSH 60
00B402D6 E9 DF090000 JMP 00B40CBA
00B402DB 64:EB 02 JMP SHORT 00B402E0 ; 多余的前缀
00B402DE CD 20 INT 20
........


怎么走到这里的,具体步骤,THANKS~~~
linex 7 2006-4-14 13:47
49
0
搜83,C4,2C,5D,5F,5E,5B,C3,下断,Ctrl+F9,F7
xwqgsterry 2006-4-14 16:48
50
0
最初由 linex 发布
搜83,C4,2C,5D,5F,5E,5B,C3,下断,Ctrl+F9,F7


希望你能写个脱文,因为这是关于VC的,VC的脱文真是太少了~~~~
游客
登录 | 注册 方可回帖
返回