首页
社区
课程
招聘
[旧帖] [求助]在脱ASPACK壳的一个问题,请各大虾指点 0.00雪花
发表于: 2007-7-30 11:24 4387

[旧帖] [求助]在脱ASPACK壳的一个问题,请各大虾指点 0.00雪花

2007-7-30 11:24
4387
我在学习破一个dll 加aspack 的壳是时候,我按照前辈的方法找到了OEP ,也找到了重定位程序。但是怎么也找不到输入表。我把我的步骤写在下面,请给我前辈指点一下,是不是我的OEP找的不对,还是其他地方除了问题。
1。用OD加载DLL, 搜索 sub ecx,8
                                  shr ecx,1
找到地址重定位程序,并得到地址重定位的大小。
009C81C8                                   8785 35050000            xchg dword ptr ss:[ebp+535],eax
009C81CE                                   8B95 22040000            mov edx,dword ptr ss:[ebp+422]
009C81D4                                   8B85 2D050000            mov eax,dword ptr ss:[ebp+52D]
009C81DA                                   2BD0                     sub edx,eax
009C81DC                                   74 79                    je short DesignDl.009C8257
009C81DE                                   8BC2                     mov eax,edx
009C81E0                                   C1E8 10                  shr eax,10
009C81E3                                   33DB                     xor ebx,ebx
009C81E5                                   8BB5 39050000            mov esi,dword ptr ss:[ebp+539]
009C81EB                                   03B5 22040000            add esi,dword ptr ss:[ebp+422]
009C81F1                                   833E 00                  cmp dword ptr ds:[esi],0
009C81F4                                   74 61                    je short DesignDl.009C8257
009C81F6                                   8B4E 04                  mov ecx,dword ptr ds:[esi+4]
009C81F9                                   83E9 08                  sub ecx,8
009C81FC                                   D1E9                     shr ecx,1
009C81FE                                   8B3E                     mov edi,dword ptr ds:[esi]
009C8200                                   03BD 22040000            add edi,dword ptr ss:[ebp+422]
009C8206                                   83C6 08                  add esi,8
009C8209                                   66:8B1E                  mov bx,word ptr ds:[esi]
009C820C                                   C1EB 0C                  shr ebx,0C
009C820F                                   83FB 01                  cmp ebx,1
009C8212                                   74 0C                    je short DesignDl.009C8220
009C8214                                   83FB 02                  cmp ebx,2
009C8217                                   74 16                    je short DesignDl.009C822F
009C8219                                   83FB 03                  cmp ebx,3
009C821C                                   74 20                    je short DesignDl.009C823E
009C821E                                   EB 2C                    jmp short DesignDl.009C824C
009C8220                                   66:8B1E                  mov bx,word ptr ds:[esi]
009C8223                                   81E3 FF0F0000            and ebx,0FFF
009C8229                                   66:01041F                add word ptr ds:[edi+ebx],ax
009C822D                                   EB 1D                    jmp short DesignDl.009C824C
009C822F                                   66:8B1E                  mov bx,word ptr ds:[esi]
009C8232                                   81E3 FF0F0000            and ebx,0FFF
009C8238                                   66:01141F                add word ptr ds:[edi+ebx],dx
009C823C                                   EB 0E                    jmp short DesignDl.009C824C
009C823E                                   66:8B1E                  mov bx,word ptr ds:[esi]
009C8241                                   81E3 FF0F0000            and ebx,0FFF
009C8247                                   01141F                   add dword ptr ds:[edi+ebx],edx
009C824A                                   EB 00                    jmp short DesignDl.009C824C
009C824C                                   66:830E FF               or word ptr ds:[esi],0FFFF
009C8250                                   83C6 02                  add esi,2
009C8253                                 ^ E2 B4                    loopd short DesignDl.009C8209
009C8255                                 ^ EB 9A                    jmp short DesignDl.009C81F1
009C8257                                   8B95 22040000            mov edx,dword ptr ss:[ebp+422]

地址重定位表的大小=9ae640-99d000=11640

2.搜索 61,75
程序跳到
009C83AF                                   61                       popad
009C83B0                                   75 08                    jnz short DesignDl.009C83BA
009C83B2                                   B8 01000000              mov eax,1
009C83B7                                   C2 0C00                  retn 0C
009C83BA                                   68 00000000              push 0
009C83BF                                   C3                       retn      //跳到OEP

OEP 出代码
00992AE0                                   55                       push ebp
00992AE1                                   8BEC                     mov ebp,esp
00992AE3                                   83C4 B4                  add esp,-4C
00992AE6                                   B8 48289900              mov eax,DesignDl.00992848
00992AEB                                   E8 7846EEFF              call DesignDl.00877168
00992AF0                                   E8 A7B5FFFF              call DesignDl.0098E09C
00992AF5                                   E8 D210EEFF              call DesignDl.00873BCC
00992AFA                                   8BC0                     mov eax,eax

我发现在此处滚动窗口屏幕就代码就变化
是不是OPE找的不对啊,
3。按照前辈介绍的方法找输入表
   任意跳一个call [XXXX] 看XXXX的内存
   我发现找到的都不连续,为什么呢?
   各位大侠能指点一下么?
   我找的是999168到9993c7 总共 214 H  大小。
我上传了附件。

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
能看到么?
我把DLL又重新上传了一遍,请大侠指导一下啊。。。。
上传的附件:
2007-7-31 11:18
0
雪    币: 295
活跃值: (346)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
3
OEP:
008A2AE0    55              push    ebp
008A2AE1    8BEC            mov     ebp, esp
008A2AE3    83C4 B4         add     esp, -4C
008A2AE6    B8 48288A00     mov     eax, 008A2848
008A2AEB    E8 7846EEFF     call    00787168                        // F7
008A2AF0    E8 A7B5FFFF     call    0089E09C
008A2AF5    E8 D210EEFF     call    00783BCC

00787168    BA 08318A00     mov     edx, 008A3108
0078716D    837D 0C 01      cmp     dword ptr [ebp+C], 1
00787171    75 2A           jnz     short 0078719D
00787173    50              push    eax
00787174    52              push    edx
00787175    C605 D0748A00 0>mov     byte ptr [8A74D0], 1
0078717C    8B4D 08         mov     ecx, dword ptr [ebp+8]
0078717F    890D DC748A00   mov     dword ptr [8A74DC], ecx
00787185    894A 04         mov     dword ptr [edx+4], ecx
00787188    C742 08 0000000>mov     dword ptr [edx+8], 0
0078718F    C742 0C 0000000>mov     dword ptr [edx+C], 0
00787196    E8 81FFFFFF     call    0078711C                         // F7
0078719B    5A              pop     edx
0078719C    58              pop     eax
0078719D    FF35 E0748A00   push    dword ptr [8A74E0]
007871A3    B9 20318A00     mov     ecx, 008A3120
007871A8    E8 BBC8FFFF     call    00783A68
007871AD    C3              retn

0078711C    53              push    ebx
0078711D    81C4 F8FEFFFF   add     esp, -108
00787123    68 05010000     push    105
00787128    8D4424 04       lea     eax, dword ptr [esp+4]
0078712C    50              push    eax
0078712D    A1 DC748A00     mov     eax, dword ptr [8A74DC]
00787132    50              push    eax
00787133    E8 A4FEFFFF     call    00786FDC                         // F7
00787138    8BC4            mov     eax, esp
0078713A    E8 A1EEFFFF     call    00785FE0
0078713F    8BD8            mov     ebx, eax
00787141    891D 18318A00   mov     dword ptr [8A3118], ebx
00787147    85DB            test    ebx, ebx
00787149    75 0A           jnz     short 00787155
0078714B    A1 0C318A00     mov     eax, dword ptr [8A310C]
00787150    A3 18318A00     mov     dword ptr [8A3118], eax
00787155    B8 08318A00     mov     eax, 008A3108
0078715A    E8 69F1FFFF     call    007862C8
0078715F    81C4 08010000   add     esp, 108
00787165    5B              pop     ebx
00787166    C3              retn

00786FDC  - FF25 90928A00   jmp     dword ptr [8A9290]               ; KERNEL32.GetModuleFileNameA
00786FE2    8BC0            mov     eax, eax
00786FE4  - FF25 8C928A00   jmp     dword ptr [8A928C]               ; KERNEL32.LocalAlloc
00786FEA    8BC0            mov     eax, eax
00786FEC  - FF25 88928A00   jmp     dword ptr [8A9288]               ; KERNEL32.LocalFree

IAT: 8A9168-8A98A4
2007-8-1 01:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
多谢楼上大侠指导,我马上去先学习下,然后再请教。
2007-8-1 22:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看过了,不知道你的8a9168-8a98a4 是怎么来的,因为我发先再这中间有几个不连续的,
有几个是连续4个字节是00 这样也算么?
2007-8-1 22:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我把我的代码贴上去。
00876FE4                                 - FF25 8C929900            jmp dword ptr ds:[99928C]          ; kernel32.LocalAlloc
00876FEA                                   8BC0                     mov eax,eax
00876FEC                                 - FF25 88929900            jmp dword ptr ds:[999288]          ; kernel32.LocalFree
00876FF2                                   8BC0                     mov eax,eax
00876FF4                                 - FF25 84929900            jmp dword ptr ds:[999284]          ; kernel32.TlsAlloc
00876FFA                                   8BC0                     mov eax,eax
00876FFC                                 - FF25 80929900            jmp dword ptr ds:[999280]          ; kernel32.TlsFree
00877002                                   8BC0                     mov eax,eax
00877004                                 - FF25 7C929900            jmp dword ptr ds:[99927C]          ; kernel32.TlsGetValue
0087700A                                   8BC0                     mov eax,eax
0087700C                                 - FF25 78929900            jmp dword ptr ds:[999278]          ; kernel32.TlsSetValue

查看99928C左右的内存

00999270  74 16 0F 77 00 00 00 00 27 9F AD 4F 90 8B AD 4F  tw....'煭O悑璒
00999280  B0 D4 AE 4F 7D E5 AD 4F DB 8D AD 4F 38 8E AD 4F  霸甇}瀛O蹗璒8幁O
00999290  70 9E AD 4F 00 00 00 00 10 24 DA 77 9A 22 DA 77  p灜O....$趙?趙
009992A0  D8 17 DA 77 00 00 00 00 A6 AD AD 4F 7D 96 AD 4F  ?趙....Ν璒}柇O

此段的内存并不连续啊。。。有4个字节的 00 00 00 00 断开。。
2007-8-1 22:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看看         学习。
2007-8-2 01:22
0
雪    币: 295
活跃值: (346)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
8
008A9158  00000000
008A915C  00000000
008A9160  00000000
008A9164  00000000
008A9168  7C59BB03  KERNEL32.GetCurrentThreadId
008A916C  77F85655  ntdll.RtlDeleteCriticalSection
008A9170  77F82091  ntdll.RtlLeaveCriticalSection
008A9174  77F82060  ntdll.RtlEnterCriticalSection
008A9178  7C599864  KERNEL32.InitializeCriticalSection
008A917C  7C58E85F  KERNEL32.VirtualFree
......
008A9208  7C586089  KERNEL32.GetFileType
008A920C  7C58C1AB  KERNEL32.CreateFileA
008A9210  7C577E6D  KERNEL32.CloseHandle
008A9214  00000000
008A9218  77E3D536  USER32.GetKeyboardType
008A921C  77E20D2E  USER32.LoadStringA
008A9220  77E333B3  USER32.MessageBoxA
008A9224  77E2441E  USER32.CharNextA
008A9228  00000000
008A922C  7C2D2C9C  ADVAPI32.RegQueryValueExA
008A9230  7C2D24B9  ADVAPI32.RegOpenKeyExA
008A9234  7C2D18BF  ADVAPI32.RegCloseKey
008A9238  00000000
008A923C  779DABB0  oleaut32.SafeArrayPutElement
008A9240  779DA9C0  oleaut32.SafeArrayPtrOfIndex
008A9244  779DAA60  oleaut32.SafeArrayGetElement
008A9248  779DA9B0  oleaut32.SafeArrayUnaccessData
008A924C  779DA980  oleaut32.SafeArrayAccessData
008A9250  779DA880  oleaut32.SafeArrayGetUBound
008A9254  779D9840  oleaut32.SafeArrayCreate
008A9258  779DBDD0  oleaut32.VariantChangeTypeEx
008A925C  779DBAE0  oleaut32.VariantCopyInd
008A9260  779DB7A0  oleaut32.VariantClear
008A9264  779D9430  oleaut32.SysStringLen
008A9268  779D93D0  oleaut32.SysFreeString
008A926C  779D92D0  oleaut32.SysReAllocStringLen
008A9270  779D9200  oleaut32.SysAllocStringLen
008A9274  00000000
008A9278  7C59C148  KERNEL32.TlsSetValue
008A927C  7C59C0FB  KERNEL32.TlsGetValue
008A9280  7C59C1ED  KERNEL32.TlsFree
008A9284  7C59BFCE  KERNEL32.TlsAlloc
008A9288  7C5792B8  KERNEL32.LocalFree
008A928C  7C579129  KERNEL32.LocalAlloc
008A9290  7C590A10  KERNEL32.GetModuleFileNameA
008A9294  00000000
008A9298  7C2D2C9C  ADVAPI32.RegQueryValueExA
008A929C  7C2D24B9  ADVAPI32.RegOpenKeyExA
008A92A0  7C2D18BF  ADVAPI32.RegCloseKey
008A92A4  00000000
008A92A8  7C58F158  KERNEL32.lstrcpyA
008A92AC  7C58F05E  KERNEL32.lstrcmpA
......
008A9870  717240A6  comctl32.InitCommonControls
008A9874  00000000
008A9878  7836790E  shell32.Shell_NotifyIconA
008A987C  78366297  shell32.ShellExecuteA
008A9880  00000000
008A9884  78314ABF  shell32.SHGetPathFromIDListA
008A9888  78324E08  shell32.SHGetMalloc
008A988C  7831E6FC  shell32.SHGetDesktopFolder
008A9890  7838E681  shell32.SHBrowseForFolderA
008A9894  00000000
008A9898  76B364A8
008A989C  00000000
008A98A0  7C57B5E0  KERNEL32.MulDiv
008A98A4  00000000
2007-8-2 01:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
按照楼上高手的指导,我是把壳脱了。
让我学了好几招数。
由此我可以总结出:输入表IAT里允许00 00 00 00 的地址存在。
因为我在<加密解密>page 282 里面看到的IAT 全是非0连续的。所以我以前认为看到00 00 00 00 就是IAT 表结束了,现在看来这样理解是错误的。

请再给予指导,谢谢楼上,
另外我QQ 是 95003727 我可以加你为好友么?
2007-8-2 16:14
0
游客
登录 | 注册 方可回帖
返回
//