首页
社区
课程
招聘
[原创]aspr2.2 SKE 外壳简单分析
发表于: 2006-4-4 09:38 7837

[原创]aspr2.2 SKE 外壳简单分析

2006-4-4 09:38
7837
aspr2.2 SKE 外壳简单分析

【破 解 人】:林海雪原
【调试环境】:Win2K、OllyICE
【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

现在的ASPR没有了那些异常,只有2次int3,在第一次int3后,按十六进制数找"84 C0 75 0A 68 D0 84",共有几处,有ASCII "85"这个标志的地方就是IAT处理之处:

00E28242     5E                pop esi
00E28243     EB 0A             jmp short 00E2824F
00E28245     68 D084E200       push 0E284D0                         ; ASCII "85"
00E2824A     E8 C5CEFDFF       call 00E05114
00E2824F     A1 78A9E200       mov eax,[dword ds:E2A978]
00E28254     8B00              mov eax,[dword ds:eax]
00E28256     E8 410FFFFF       call 00E1919C                 <<<<<<<----进入!
00E2825B     84C0              test al,al
00E2825D     75 0A             jnz short 00E28269
00E2825F     68 D084E200       push 0E284D0                         ; ASCII "85"
00E28264     E8 ABCEFDFF       call 00E05114
00E28269     A1 40AAE200       mov eax,[dword ds:E2AA40]

84 C0 75 0A 68 D0 84

进入后,我们可以十分明显看见,IAT的处理没有变化,仍按shoooo那样处理:

IAT:

00E1919C     53                push ebx
00E1919D     56                push esi
00E1919E     57                push edi
00E1919F     55                push ebp
00E191A0     83C4 F4           add esp,-0C
00E191A3     8BF0              mov esi,eax
00E191A5     C60424 01         mov [byte ss:esp],1
00E191A9     EB 01             jmp short 00E191AC
00E191AB     9A 837E0400 0F84  call far 840F:00047E83
00E191B2     3A01              cmp al,[byte ds:ecx]
00E191B4     0000              add [byte ds:eax],al
00E191B6     8B7E 04           mov edi,[dword ds:esi+4]
00E191B9     8B46 50           mov eax,[dword ds:esi+50]
00E191BC     894424 04         mov [dword ss:esp+4],eax
00E191C0     EB 01             jmp short 00E191C3
00E191C2     698D 4634B909 000>imul ecx,[dword ss:ebp+9B93446],8B00>
00E191CC     D7                xlat [byte ds:ebx+al]
00E191CD     E8 06CEFDFF       call 00DF5FD8
00E191D2     83C7 09           add edi,9
00E191D5     8B15 00A9E200     mov edx,[dword ds:E2A900]
00E191DB     8B12              mov edx,[dword ds:edx]
00E191DD     8BC6              mov eax,esi
00E191DF     E8 ECF1FFFF       call 00E183D0
00E191E4     84C0              test al,al
00E191E6     0F84 F8000000     je 00E192E4
00E191EC     6A 14             push 14
00E191EE     E8 89C4FEFF       call 00E0567C
00E191F3     01C7              add edi,eax
00E191F5     E9 EA000000       jmp 00E192E4
00E191FA     894424 08         mov [dword ss:esp+8],eax
00E191FE     6A FF             push -1
00E19200     E8 77C4FEFF       call 00E0567C
00E19205     40                inc eax
00E19206     8903              mov [dword ds:ebx],eax
00E19208     83C7 04           add edi,4
00E1920B     83C7 06           add edi,6
00E1920E     8BEF              mov ebp,edi
00E19210     8BC7              mov eax,edi
00E19212     E8 4D2BFEFF       call 00DFBD64
00E19217     40                inc eax
00E19218     0FB7C0            movzx eax,ax
00E1921B     03F8              add edi,eax
00E1921D     8B46 48           mov eax,[dword ds:esi+48]
00E19220     8B00              mov eax,[dword ds:eax]
00E19222     3346 48           xor eax,[dword ds:esi+48]
00E19225     2B46 4C           sub eax,[dword ds:esi+4C]
00E19228     E8 EBFEFFFF       call 00E19118
00E1922D     25 FF000000       and eax,0FF
00E19232     03F8              add edi,eax
00E19234     8A1F              mov bl,[byte ds:edi]
00E19236     47                inc edi
00E19237     8B46 40           mov eax,[dword ds:esi+40]
00E1923A     8B00              mov eax,[dword ds:eax]
00E1923C     3346 40           xor eax,[dword ds:esi+40]
00E1923F     2B46 44           sub eax,[dword ds:esi+44]
00E19242     E8 D1FEFFFF       call 00E19118
00E19247     25 FF000000       and eax,0FF
00E1924C     03F8              add edi,eax
00E1924E     8B4424 04         mov eax,[dword ss:esp+4]
00E19252     014424 08         add [dword ss:esp+8],eax
00E19256     E9 80000000       jmp 00E192DB
00E1925B     3A5E 37           cmp bl,[byte ds:esi+37]
00E1925E     75 17             jnz short 00E19277
00E19260     83C7 02           add edi,2
00E19263     8BC7              mov eax,edi
00E19265     50                push eax
00E19266     55                push ebp
00E19267     8D4424 10         lea eax,[dword ss:esp+10]
00E1926B     50                push eax
00E1926C     56                push esi
00E1926D     E8 CAFCFFFF       call 00E18F3C
00E19272     83C7 04           add edi,4
00E19275     EB 61             jmp short 00E192D8
00E19277     3A5E 38           cmp bl,[byte ds:esi+38]
00E1927A     75 17             jnz short 00E19293
00E1927C     83C7 02           add edi,2
00E1927F     8BC7              mov eax,edi
00E19281     50                push eax
00E19282     55                push ebp
00E19283     8D4424 10         lea eax,[dword ss:esp+10]
00E19287     50                push eax
00E19288     56                push esi
00E19289     E8 AEFCFFFF       call 00E18F3C
00E1928E     83C7 02           add edi,2
00E19291     EB 45             jmp short 00E192D8
00E19293     3A5E 3A           cmp bl,[byte ds:esi+3A]
00E19296     75 26             jnz short 00E192BE
00E19298     83C7 02           add edi,2
00E1929B     8A07              mov al,[byte ds:edi]
00E1929D     E8 0EEEFFFF       call 00E180B0
00E192A2     8B5424 08         mov edx,[dword ss:esp+8]
00E192A6     8902              mov [dword ds:edx],eax
00E192A8     85C0              test eax,eax
00E192AA     75 0A             jnz short 00E192B6
00E192AC     68 0493E100       push 0E19304                         ; ASCII "180"
00E192B1     E8 5EBEFEFF       call 00E05114
00E192B6     834424 08 04      add [dword ss:esp+8],4
00E192BB     47                inc edi
00E192BC     EB 1A             jmp short 00E192D8
00E192BE     83C7 02           add edi,2
00E192C1     8BC7              mov eax,edi
00E192C3     50                push eax
00E192C4     55                push ebp
00E192C5     8D4424 10         lea eax,[dword ss:esp+10]
00E192C9     50                push eax
00E192CA     56                push esi
00E192CB     E8 6CFCFFFF       call 00E18F3C         <<<<<<-----进入!处理IAT
00E192D0     0FB707            movzx eax,[word ds:edi]
00E192D3     83C0 02           add eax,2
00E192D6     03F8              add edi,eax
00E192D8     8A1F              mov bl,[byte ds:edi]
00E192DA     47                inc edi
00E192DB     3A5E 34           cmp bl,[byte ds:esi+34]
00E192DE   ^ 0F85 77FFFFFF     jnz 00E1925B          <<<<<<比较API处理完没
00E192E4     8BDF              mov ebx,edi
00E192E6     8B03              mov eax,[dword ds:ebx]
00E192E8     85C0              test eax,eax
00E192EA   ^ 0F85 0AFFFFFF     jnz 00E191FA          <<<<<<比较DLL处理完没
00E192F0     8A0424            mov al,[byte ss:esp]
00E192F3     83C4 0C           add esp,0C
00E192F6     5D                pop ebp
00E192F7     5F                pop edi
00E192F8     5E                pop esi
00E192F9     5B                pop ebx
00E192FA     C3                retn

进入上面CALL后:

00E18F3C     55                push ebp
00E18F3D     8BEC              mov ebp,esp
00E18F3F     81C4 F8FEFFFF     add esp,-108
00E18F45     53                push ebx
00E18F46     56                push esi
00E18F47     57                push edi
00E18F48     8B55 14           mov edx,[dword ss:ebp+14]
00E18F4B     8B5D 08           mov ebx,[dword ss:ebp+8]
00E18F4E     8DBD FAFEFFFF     lea edi,[dword ss:ebp-106]
00E18F54     8BC2              mov eax,edx
00E18F56     48                dec eax
00E18F57     83E8 02           sub eax,2
00E18F5A     0FB630            movzx esi,[byte ds:eax]
00E18F5D     8B45 10           mov eax,[dword ss:ebp+10]
00E18F60     83E8 02           sub eax,2
00E18F63     0FB600            movzx eax,[byte ds:eax]
00E18F66     3B43 2C           cmp eax,[dword ds:ebx+2C]
00E18F69     76 06             jbe short 00E18F71
00E18F6B     8943 2C           mov [dword ds:ebx+2C],eax
00E18F6E     EB 01             jmp short 00E18F71
00E18F70     6933 C08A433B     imul esi,[dword ds:ebx],3B438AC0
00E18F76     3BF0              cmp esi,eax               <<<<<<<-----比较3种情况!!
00E18F78     75 5E             jnz short 00E18FD8
00E18F7A     EB 01             jmp short 00E18F7D
00E18F7C     C7                ???                                    ; 未知命令
00E18F7D     66:8B02           mov ax,[word ds:edx]
00E18F80     66:8945 FA        mov [word ss:ebp-6],ax
00E18F84     83C2 02           add edx,2
00E18F87     8955 FC           mov [dword ss:ebp-4],edx
00E18F8A     66:817D FA FF00   cmp [word ss:ebp-6],0FF
00E18F90     76 0B             jbe short 00E18F9D
00E18F92     0FB745 FA         movzx eax,[word ss:ebp-6]
00E18F96     E8 B195FDFF       call 00DF254C
00E18F9B     8BF8              mov edi,eax
00E18F9D     0FB775 FA         movzx esi,[word ss:ebp-6]
00E18FA1     8BCE              mov ecx,esi
00E18FA3     8B55 FC           mov edx,[dword ss:ebp-4]
00E18FA6     8BC7              mov eax,edi
00E18FA8     E8 2BD0FDFF       call 00DF5FD8
00E18FAD     6A 0A             push 0A
00E18FAF     8D4B 12           lea ecx,[dword ds:ebx+12]
00E18FB2     8BD6              mov edx,esi
00E18FB4     8BC7              mov eax,edi
00E18FB6     E8 B1B4FEFF       call 00E0446C
00E18FBB     897D FC           mov [dword ss:ebp-4],edi
00E18FBE     8B45 FC           mov eax,[dword ss:ebp-4]
00E18FC1     50                push eax
00E18FC2     8B45 10           mov eax,[dword ss:ebp+10]
00E18FC5     50                push eax
00E18FC6     53                push ebx
00E18FC7     E8 7CFDFFFF       call 00E18D48            <<<<<<----1
00E18FCC     8B55 0C           mov edx,[dword ss:ebp+C]
00E18FCF     8B12              mov edx,[dword ds:edx]
00E18FD1     8902              mov [dword ds:edx],eax
00E18FD3     E9 20010000       jmp 00E190F8
00E18FD8     33C0              xor eax,eax
00E18FDA     8A43 35           mov al,[byte ds:ebx+35]
00E18FDD     3BF0              cmp esi,eax
00E18FDF     74 22             je short 00E19003
00E18FE1     33C0              xor eax,eax
00E18FE3     8A43 36           mov al,[byte ds:ebx+36]
00E18FE6     3BF0              cmp esi,eax
00E18FE8     74 19             je short 00E19003
00E18FEA     33C0              xor eax,eax
00E18FEC     8A43 37           mov al,[byte ds:ebx+37]
00E18FEF     3BF0              cmp esi,eax
00E18FF1     74 10             je short 00E19003
00E18FF3     33C0              xor eax,eax
00E18FF5     8A43 39           mov al,[byte ds:ebx+39]
00E18FF8     3BF0              cmp esi,eax
00E18FFA     0F85 AD000000     jnz 00E190AD
00E19000     EB 01             jmp short 00E19003
00E19002     E8 33C08A43       call 446C503A
00E19007     36:3BF0           cmp esi,eax
00E1900A     74 09             je short 00E19015
00E1900C     33C0              xor eax,eax
00E1900E     8A43 39           mov al,[byte ds:ebx+39]
00E19011     3BF0              cmp esi,eax
00E19013     75 43             jnz short 00E19058
00E19015     66:8B02           mov ax,[word ds:edx]
00E19018     66:8945 FA        mov [word ss:ebp-6],ax
00E1901C     83C2 02           add edx,2
00E1901F     8955 FC           mov [dword ss:ebp-4],edx
00E19022     66:817D FA FF00   cmp [word ss:ebp-6],0FF
00E19028     76 0B             jbe short 00E19035
00E1902A     0FB745 FA         movzx eax,[word ss:ebp-6]
00E1902E     E8 1995FDFF       call 00DF254C
00E19033     8BF8              mov edi,eax
00E19035     0FB74D FA         movzx ecx,[word ss:ebp-6]
00E19039     8B55 FC           mov edx,[dword ss:ebp-4]
00E1903C     8BC7              mov eax,edi
00E1903E     E8 95CFFDFF       call 00DF5FD8
00E19043     6A 0A             push 0A
00E19045     8D4B 08           lea ecx,[dword ds:ebx+8]
00E19048     0FB755 FA         movzx edx,[word ss:ebp-6]
00E1904C     8BC7              mov eax,edi
00E1904E     E8 19B4FEFF       call 00E0446C
00E19053     897D FC           mov [dword ss:ebp-4],edi
00E19056     EB 08             jmp short 00E19060
00E19058     8B02              mov eax,[dword ds:edx]
00E1905A     8945 FC           mov [dword ss:ebp-4],eax
00E1905D     EB 01             jmp short 00E19060
00E1905F     9A 33C08A43 393B  call far 3B39:438AC033
00E19066     F0:75 24          lock jnz short 00E1908D                ; 不允许锁定前缀
00E19069     8B45 FC           mov eax,[dword ss:ebp-4]
00E1906C     50                push eax
00E1906D     8B45 10           mov eax,[dword ss:ebp+10]
00E19070     50                push eax
00E19071     53                push ebx
00E19072     E8 D1FCFFFF       call 00E18D48              ><<<<<<<<<<<----2
00E19077     8B15 10AAE200     mov edx,[dword ds:E2AA10]
00E1907D     8902              mov [dword ds:edx],eax
00E1907F     B8 1481E100       mov eax,0E18114
00E19084     8B55 0C           mov edx,[dword ss:ebp+C]
00E19087     8B12              mov edx,[dword ds:edx]
00E19089     8902              mov [dword ds:edx],eax
00E1908B     EB 6B             jmp short 00E190F8
00E1908D     33C0              xor eax,eax
00E1908F     8A43 35           mov al,[byte ds:ebx+35]
00E19092     3BF0              cmp esi,eax
00E19094     74 62             je short 00E190F8
00E19096     8B45 FC           mov eax,[dword ss:ebp-4]
00E19099     50                push eax
00E1909A     8B45 10           mov eax,[dword ss:ebp+10]
00E1909D     50                push eax
00E1909E     53                push ebx
00E1909F     E8 A4FCFFFF       call 00E18D48      <<<<<<<<----------3
00E190A4     8B55 0C           mov edx,[dword ss:ebp+C]
00E190A7     8B12              mov edx,[dword ds:edx]
00E190A9     8902              mov [dword ds:edx],eax
00E190AB     EB 4B             jmp short 00E190F8
00E190AD     33C0              xor eax,eax
00E190AF     8A43 38           mov al,[byte ds:ebx+38]
00E190B2     3BF0              cmp esi,eax
00E190B4     75 42             jnz short 00E190F8
00E190B6     EB 01             jmp short 00E190B9
00E190B8     9A B89482E1 008B  call far 8B00:E18294B8
00E190BF     55                push ebp
00E190C0     0C 8B             or al,8B
00E190C2     1289 02B80C93     adc cl,[byte ds:ecx+930CB802]
00E190C8     E1 00             loopde short 00E190CA
00E190CA     BE 9C82E100       mov esi,0E1829C
00E190CF     2BC6              sub eax,esi
00E190D1     50                push eax
00E190D2     56                push esi
00E190D3     E8 ECA9FEFF       call 00E03AC4
00E190D8     3B43 28           cmp eax,[dword ds:ebx+28]
00E190DB     74 1B             je short 00E190F8
00E190DD     6A FF             push -1
00E190DF     E8 98C5FEFF       call 00E0567C
00E190E4     8D53 08           lea edx,[dword ds:ebx+8]
00E190E7     8902              mov [dword ds:edx],eax
00E190E9     6A 1E             push 1E
00E190EB     E8 8CC5FEFF       call 00E0567C
00E190F0     8B55 0C           mov edx,[dword ss:ebp+C]
00E190F3     0102              add [dword ds:edx],eax
00E190F5     EB 01             jmp short 00E190F8
00E190F7   - E9 8B450C83       jmp 83EDD687
00E190FC     00048D 85FAFEFF   add [byte ds:ecx*4+FFFEFA85],al
00E19103     FF3B              ???                                    ; 未知命令
00E19105     F8                clc
00E19106     74 07             je short 00E1910F
00E19108     8BC7              mov eax,edi
00E1910A     E8 5594FDFF       call 00DF2564
00E1910F     5F                pop edi
00E19110     5E                pop esi
00E19111     5B                pop ebx
00E19112     8BE5              mov esp,ebp
00E19114     5D                pop ebp
00E19115     C2 1000           retn 10

处理完IAT后,在第二次int3后,CTRL+B找"83 C4 28 5D 5F 5E 5B C3",共有2处:

1、

00E284A9     68 0085E200       push 0E28500                   ; ASCII "60"
00E284AE     E8 61CCFDFF       call 00E05114
00E284B3     8BC6              mov eax,esi
00E284B5     E8 5AA7FCFF       call 00DF2C14
00E284BA     E8 1DF5FFFF       call 00E279DC
00E284BF     83C4 28           add esp,28
00E284C2     5D                pop ebp
00E284C3     5F                pop edi
00E284C4     5E                pop esi
00E284C5     5B                pop ebx
00E284C6     C3                retn

2、

00E289AA     8BC3              mov eax,ebx
00E289AC     E8 63A2FCFF       call 00DF2C14
00E289B1     E8 26F0FFFF       call 00E279DC                          ; 进!      
00E289B6     83C4 28           add esp,28
00E289B9     5D                pop ebp
00E289BA     5F                pop edi
00E289BB     5E                pop esi
00E289BC     5B                pop ebx
00E289BD     C3                retn

这个“ 83 C4 28 5D 5F 5E 5B C3”就是syscom找OEP的特征码,这个地方ASPR只有点小变化,

以前是这样:按 CTRL+B 搜? 83,C4,2C,5D,5F,5E,5B,C3 ,在 00BDA8C5 ,韵硬件??

00BDA8C5--E8 7ACEFFFF     CALL 00BD7744   <= 韵硬件??
00BDA8CA--83C4 2C         ADD  ESP,2C
00BDA8CD--5D              POP  EBP
00BDA8CE--5F              POP  EDI
00BDA8CF--5E              POP  ESI
00BDA8D0--5B              POP  EBX
00BDA8D1--C3              RETN

进入后也与以前没有出入:

00E37A46     C1CB CB           ror ebx,0CB
00E37A49     68 D7036001       push 16003D7
00E37A4E     81C3 D4B0ED76     add ebx,76EDB0D4
00E37A54     5B                pop ebx
00E37A55     53                push ebx
00E37A56     C1D3 25           rcl ebx,25
00E37A59     BB C2A84200       mov ebx,42A8C2
00E37A5E     C3                retn              <<<<<<<<回到OEP!
00E37A5F     26:EB 02          jmp short 00E37A64

OEP:

015F023F     55                push ebp                               ; gen.00400000
015F0240     E9 050C0000       jmp 015F0E4A
015F0245     8B42 10           mov eax,[dword ds:edx+10]

在上面回到OEP的retn处,我们可以找到下面:

00E26BA2     66:8B4D EC        mov cx,[word ss:ebp-14]
00E26BA6     66:8B55 E8        mov dx,[word ss:ebp-18]
00E26BAA     8B45 F4           mov eax,[dword ss:ebp-C]
00E26BAD     E8 F2F6FFFF       call 00E262A4
00E26BB2     84C0              test al,al
00E26BB4     8B45 F4           mov eax,[dword ss:ebp-C]
00E26BB7     8B80 E0000000     mov eax,[dword ds:eax+E0]
00E26BBD     0345 E4           add eax,[dword ss:ebp-1C]   ;这句之后,eax就是API地址了.
00E26BC0     8945 FC           mov [dword ss:ebp-4],eax    ; kernel32.GetCommandLineA
00E26BC3     57                push edi
00E26BC4     6A 00             push 0
00E26BC6     8D4D E0           lea ecx,[dword ss:ebp-20]
00E26BC9     8B45 F4           mov eax,[dword ss:ebp-C]
00E26BCC     8B40 3C           mov eax,[dword ds:eax+3C]
00E26BCF     8B55 FC           mov edx,[dword ss:ebp-4]

eax=77E74B16 (kernel32.GetCommandLineA)
堆栈 [ss:0012FE64]=0012FE84

按 CTRL+B 搜? 89,45,F0,B8,00,07,00,00 ,这以后,就按syscom那样处理了。

00E28B0A     33C0              xor eax,eax
00E28B0C     8945 F0           mov [dword ss:ebp-10],eax
00E28B0F     B8 00070000       mov eax,700
00E28B14     E8 339AFDFF       call 00E0254C

由于时间的原因我就只能这样简单写一下了,你可以详尽分析它。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (27)
雪    币: 191
活跃值: (345)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
2
沙发。收藏慢慢学习
2006-4-4 10:14
0
雪    币: 279
活跃值: (145)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
顶上~~,慢慢学习!
2006-4-4 10:15
0
雪    币: 47147
活跃值: (20405)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
Aspr难点就在OEP抽取与SDK恢复。
2006-4-4 10:44
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
5
呵呵~思路很清晰脱起来很麻烦
2006-4-4 13:16
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习!
2006-4-4 13:23
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
7
最初由 kanxue 发布
Aspr难点就在OEP抽取与SDK恢复。


老大说的极是,OEP与SDK恢复要有充足时间,只好以后详加分析了.
2006-4-4 13:45
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
又一篇牛人的牛帖,学习中!
2006-4-4 15:18
0
雪    币: 239
活跃值: (59)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你真的行哦!~~
2.3的有什么不同?
2006-4-5 15:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我在00BDA8C5--E8 7ACEFFFF     CALL 00BD7744   <= 韵硬件??
这个地方下硬断,断不下来!是怎么回事?
2006-4-5 17:43
0
雪    币: 247
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
只有努力了,支持一下
2006-4-5 18:20
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
楼主真厉害,不过84 C0 75 0A 68 D0 84我一个也没找到,只找到了一个84 C0 75 0A 68,可是它上面那个CALL用硬件中断也没有断下来
2006-4-6 10:48
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
13
最初由 lxwqcy 发布
楼主真厉害,不过84 C0 75 0A 68 D0 84我一个也没找到,只找到了一个84 C0 75 0A 68,可是它上面那个CALL用硬件中断也没有断下来


F4就好了
2006-4-6 11:46
0
雪    币: 277
活跃值: (312)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
14
应该看一下acpr2.0
2006-4-6 14:10
0
雪    币: 217
活跃值: (61)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
15
以前是这样:按 CTRL+B 搜? 83,C4,2C,5D,5F,5E,5B,C3 ,在 00BDA8C5 ,韵硬件??
有好几个aspr,我都搜到了这个特征码,下硬件断点就是断不下
为什么
2006-4-9 21:26
0
雪    币: 124
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
最初由 chasgone 发布
以前是这样:按 CTRL+B 搜? 83,C4,2C,5D,5F,5E,5B,C3 ,在 00BDA8C5 ,韵硬件??
有好几个aspr,我都搜到了这个特征码,下硬件断点就是断不下
为什么


在最后一个int3,搜索“E8 ?? ?? ?? ?? 83 C4 ?? 5D 5F 5E 5B C3”,最后一个找到的结果下硬断看看
2006-4-9 23:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
看看,支持一个!!!!
2006-4-9 23:19
0
雪    币: 208
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
请大侠帮忙看看下面OEP的stolen code,谢谢!第三句我不知道是什么,猜是sub esp, 44,但总没在代码里面看出来。由于原来汇编语言没学好,唉。。。其它部分都差不多了,就差这几步了,老大们都说这个是个体力活,没想到体力活也不好干哪。。。
00C2025F    55              push ebp
00C20260    EB 02           jmp short 00C20264

00C20264    81DD 9786647A   sbb ebp,7A648697//N
00C2026A    83ED 0F         sub ebp,0F//N
00C2026D    036C24 18       add ebp,dword ptr ss:[esp+18]//N
00C20271    8D6C24 29       lea ebp,dword ptr ss:[esp+29]//
00C20275    8D6C25 D7       lea ebp,dword ptr ss:[ebp-29]//===mov ebp, esp
00C20279    6A FF           push -1
00C2027B    50              push eax
00C2027C    66:9C           pushfw
00C2027E    53              push ebx
00C2027F    8D5F BD         lea ebx,dword ptr ds:[edi-43]//N
00C20282    8D5C11 67       lea ebx,dword ptr ds:[ecx+edx+67]//N
00C20286    2BDA            sub ebx,edx//N
00C20288    EB 02           jmp short 00C2028C

00C2028C    8D5C24 50       lea ebx,dword ptr ss:[esp+50]//
00C20290    8D5C2B B0       lea ebx,dword ptr ds:[ebx+ebp-50]//
00C20294    2BDD            sub ebx,ebp//ebx = esp
00C20296    8D5C03 06       lea ebx,dword ptr ds:[ebx+eax+6]//ebx = esp + eax +6
00C2029A    2BD8            sub ebx,eax//ebx = esp + 6
00C2029C    50              push eax
00C2029D    81E8 F2A0C984   sub eax,84C9A0F2//N
00C202A3    EB 01           jmp short 00C202A6

00C202A6    B8 FA4E4900     mov eax,494EFA//N
00C202AB    C1C0 39         rol eax,39//N
00C202AE    8D8435 90594000 lea eax,dword ptr ss:[ebp+esi+405990]//
00C202B5    2BC6            sub eax,esi//
00C202B7    2BC5            sub eax,ebp//eax = 00405990
00C202B9    F3:             prefix rep:
00C202BA    EB 02           jmp short 00C202BE

00C202BE    50              push eax                                     ; XXXXXX.00405990
00C202BF    8F03            pop dword ptr ds:[ebx]
00C202C1    58              pop eax
00C202C2    5B              pop ebx
00C202C3    66:9D           popfw
00C202C5    E9 AE040000     jmp 00C20778

00C20778    F3:             prefix rep:
00C20779    EB 02           jmp short 00C2077D

00C20781    FF7424 1C       push dword ptr ss:[esp+1C]
00C20785    66:9C           pushfw
00C20787    57              push edi
00C20788    13FB            adc edi,ebx
00C2078A    F2:             prefix repne:
00C2078B    EB 01           jmp short 00C2078E

00C2078E    8D7C51 07       lea edi,dword ptr ds:[ecx+edx*2+7]//N
00C20792    8D7C24 12       lea edi,dword ptr ss:[esp+12]//
00C20796    8D7F EE         lea edi,dword ptr ds:[edi-12]//
00C20799    8D7F 06         lea edi,dword ptr ds:[edi+6]//edi = esp + 6
00C2079C    56              push esi
00C2079D    64:EB 02        jmp short 00C207A2

00C207A2    81CE CEE6ACC5   or esi,C5ACE6CE//N
00C207A8    1BF5            sbb esi,ebp//N
00C207AA    8DB40B 34414000 lea esi,dword ptr ds:[ebx+ecx+404134]//
00C207B1    2BF1            sub esi,ecx//
00C207B3    2BF3            sub esi,ebx//esi = 00404134
00C207B5    56              push esi
00C207B6    F2:             prefix repne:
00C207B7    EB 01           jmp short 00C207BA

00C207BA    8F07            pop dword ptr ds:[edi]                       ; XXXXXX.00404134
00C207BC    5E              pop esi
00C207BD    5F              pop edi
00C207BE    66:9D           popfw
00C207C0    64:A1 00000000  mov eax,dword ptr fs:[0]
00C207C6    50              push eax
00C207C7    64:8925 0000000>mov dword ptr fs:[0],esp
00C207CE    83EC 68         sub esp,68
00C207D1    53              push ebx
00C207D2    56              push esi
00C207D3    57              push edi
00C207D4    8965 E8         mov dword ptr ss:[ebp-18],esp
00C207D7    33DB            xor ebx,ebx
00C207D9    895D FC         mov dword ptr ss:[ebp-4],ebx
00C207DC    6A 02           push 2
00C207DE    FF15 28524000   call dword ptr ds:[405228]                   ; msvcrt.__set_app_type
00C207E4    59              pop ecx
00C207E5    830D 2C7E4000 F>or dword ptr ds:[407E2C],FFFFFFFF
00C207EC    830D 307E4000 F>or dword ptr ds:[407E30],FFFFFFFF
00C207F3    FF15 24524000   call dword ptr ds:[405224]                   ; msvcrt.__p__fmode
00C207F9    81E1 404192A5   and ecx,A5924140
00C207FF    F2:             prefix repne:
00C20800    EB 01           jmp short 00C20803
2006-4-10 09:15
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
19
00C20275    8D6C25 D7       lea ebp,dword ptr ss:[ebp-29]//===mov ebp, esp
00C20279    6A FF          push -1  <====就是了

好象是vc的
2006-4-10 11:14
0
雪    币: 208
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
林兄,多谢回复。但根据老大们说的几种标准入口代码,VC6的是这样的:
004010CC >  55              push ebp
004010CD    8BEC            mov ebp,esp
004010CF    83EC 44         sub esp,44
004010D2    56              push esi

但这个push -1怎么能够还原到sub esp, 44呢,一直没想通。
应该是VC写的,因为该软件一共有三个文件都用aspr加的壳,dll文件我已经脱下了,是VC的,但另外两个exe文件都走到这儿,没弄明白入口点的stolen code。我自己加的notepad很快就找回了stolen code,但这个程序我一直没弄清楚。
2006-4-10 11:59
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
21
从代码看,你这个OEP 90%是这样的:
00C2025F    55              push ebp
00C20275    8D6C25 D7       ===mov ebp, esp
00C20279    6A FF           push -1
                            push XXXXXXXX
                            push XXXXXXXX     <<===这2个要动态跟一下
00C207C0    64:A1 00000000  mov eax,dword ptr fs:[0]
00C207C6    50              push eax
00C207C7    64:8925 0000000>mov dword ptr fs:[0],esp
00C207CE    83EC 68         sub esp,68
00C207D1    53              push ebx
00C207D2    56              push esi
00C207D3    57              push edi
00C207D4    8965 E8         mov dword ptr ss:[ebp-18],esp
00C207D7    33DB            xor ebx,ebx
00C207D9    895D FC         mov dword ptr ss:[ebp-4],ebx
00C207DC    6A 02           push 2
00C207DE    FF15 28524000   call dword ptr ds:[405228]                   ; msvcrt.__set_app_type

2个pushfw....popfw之间应当没实际代码的...应是计算某个值

VC我不是很了解,如果是VC5应当是这样没错了
2006-4-10 13:32
0
雪    币: 208
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
感谢林海雪原的耐心回复,昨天跟的结果就是两个pushfd和popfd之间结束后,堆栈里面实际上只是多了两个值,这两个值就是你说的XXXXXXX吧。
另外,在这段代码中还有:
0118046B    FF15 D0314D00   call dword ptr ds:[4D31D0]                   ; kernel32.GetModuleHandleA
01180471    50              push eax
01180472    68 49071801     push 1180749
01180477    E8 84FB0500     call 011E0000
0118047C    C2 1000         retn 10
0118047F    46              inc esi
01180480    E9 08000000     jmp 0118048D
01180485    83C4 24         add esp,24
01180488    E9 24010000     jmp 011805B1
0118048D    8975 8C         mov dword ptr ss:[ebp-74],esi
01180490    8A06            mov al,byte ptr ds:[esi]
01180492    3AC3            cmp al,bl
01180494    0F84 4D010000   je 011805E7
0118049A    3C 20           cmp al,20
0118049C    E8 5FFB0500     call 011E0000
011804A1    68 AC2C88C8     push C8882CAC
011804A6    66:9C           pushfw
011804A8    57              push edi
011804A9    81CF 8462CE66   or edi,66CE6284
011804AF    8DBC0B 0E2D4000 lea edi,dword ptr ds:[ebx+ecx+402D0E]
011804B6    2E:EB 01        jmp short 011804BA

里面的call 011E0000就是你在上一篇文章中所说的对原程序的call或jmp的处理,right?code段里面call到壳里的call或jmp我已经修正好了,我只需要跟进这些call 011E0000找到跳转到code段的原call或jmp即可,是吗?
另外,如果把壳里的有用代码全部找回来,如果要完成完全修复的话,是否需要把这些代码全部填充到code段里面去?
由于是初学,可能有些问题问得比较幼稚,请不吝赐教。谢谢。
2006-4-10 13:56
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
23
01180472    68 49071801     push 1180749
01180477    E8 84FB0500     call 011E0000
上面修复后是call XXXXX

下面修复后是je\jnz.....之类的判断:
0118049A    3C 20           cmp al,20
0118049C    E8 5FFB0500     call 011E0000

如果要完成完全修复的话,就要找回所有的stolen code.
2006-4-10 14:14
0
雪    币: 208
活跃值: (41)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
24
多谢林海兄台。我找了个VC5的程序比较了一下,看起来的确象是VC5的入口。我再仔细消化一下。
2006-4-10 14:27
0
雪    币: 279
活跃值: (145)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
25
一直没搞定OEP stolen 学习学习.
2006-4-10 14:31
0
游客
登录 | 注册 方可回帖
返回
//