首页
社区
课程
招聘
[讨论]Armadillo:入口超范围(在PE头中指定)
发表于: 2008-7-30 12:29 6141

[讨论]Armadillo:入口超范围(在PE头中指定)

2008-7-30 12:29
6141
练习用本站的练习程序:
CrackMe.exe(用 PEiD 检测显示是 Delphi 编的)

程序下载地址:http://bbs.pediy.com/attachment.php?attachmentid=500&d=1139895403

加壳工具:
Armadillo_Custom4.40.0250

选项:
Project ID: aaa1 
Version:1.00
Enter Key Dialog Options:Two-Line Text Enter Key Dialog(default)
Protection Options:Standard protection only
Backup Key:No registry Keys at all
SoftICE Detection:stadnard SoftICE Detection
Data-After-Program:Protect and leave at end of file

先看看查壳的情况:
(armadillo-fp壳分析)
<------- 30-07-2008 10:32:11 ------->
C:\Documents and Settings\Administrator\桌面\cffo-3\CrackMe3.exe
!- Protected Armadillo
Version 4.40.0250 (Custom Build)
Protection system (Professional)
!- <Protection Options>
Standard protection or Minimum protection
!- <Backup Key Options>
No Registry Keys at All
!- <Compression Options>
Better/Slower Compression
!- <Other Options>
基本情况就是这样了.没上传权限,只能高手下个小练习程序自己加一下壳,抱歉!

找OEP出错过程:

1.OllyDBG载入:入口点警告模块代码入口点超出范围(在PE文件头中指定).

疑问:其它标准保护方式Protection Options>
Standard protection or Minimum protection
Enable Import Table Elimination
Enable Strategic Code Splicing
没这个警告啊,怎么回事?


0049D000 > 60               PUSHAD      <====停这儿了
0049D001   E8 00000000      CALL CrackMe3.0049D006
0049D006   5D               POP EBP
0049D007   50               PUSH EAX
0049D008   51               PUSH ECX
0049D009   0FCA             BSWAP EDX
0049D00B   F7D2             NOT EDX
0049D00D   9C               PUSHFD
0049D00E   F7D2             NOT EDX
0049D010   0FCA             BSWAP EDX
0049D012   EB 0F            JMP SHORT CrackMe3.0049D023
0049D014   B9 EB0FB8EB      MOV ECX,EBB80FEB

2.CTRL+G  输入GetModuleHandleA

7C82474A > 8BFF             MOV EDI,EDI
7C82474C   55               PUSH EBP
7C82474D   8BEC             MOV EBP,ESP
7C82474F   837D 08 00       CMP DWORD PTR SS:[EBP+8],0
7C824753   74 18            JE SHORT kernel32.7C82476D  <=====这里下硬件执行断点
7C824755   FF75 08          PUSH DWORD PTR SS:[EBP+8]
7C824758   E8 C2040000      CALL kernel32.7C824C1F
7C82475D   85C0             TEST EAX,EAX
7C82475F   74 08            JE SHORT kernel32.7C824769
7C824761   FF70 04          PUSH DWORD PTR DS:[EAX+4]
7C824764   E8 CD090000      CALL kernel32.GetModuleHandleW

3.Shift+F9按N下
堆栈窗口中想看到:ASCII "kernel32.dll"  ASCII "VirtualAlloc")
堆栈窗口中想看到:ASCII "kernel32.dll"  ASCII "VirtualFree")

没戏了,飞了!!!!!!

请教!!!

加了壳的练习程序:请点击下载

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 337
活跃值: (74)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
2
第一步:
设OD选项--》调试选项===》异常--》忽略所有(全勾上,包括单步)
设OD隐藏--》插件--》Invisible  或者  插件--》HideOD-->hide

第二步:载入notepad

提示:模块‘Notepad’入口点超出代码范围(在PE文件头中指定)。可能这是一个自解压或自修改文件。请在设置断点时记住这一点!
不明白怎么为,不管它先。也许这就是问题所在!

00544000 > 60               PUSHAD    《---停在这儿了,和楼主的情况一样。
00544001   E8 00000000      CALL Notepad.00544006
00544006   5D               POP EBP
00544007   50               PUSH EAX
00544008   51               PUSH ECX
00544009   0FCA             BSWAP EDX
0054400B   F7D2             NOT EDX
0054400D   9C               PUSHFD
0054400E   F7D2             NOT EDX
00544010   0FCA             BSWAP EDX

第三步:下断点:he GetModuleHandleA+9 我是用Ctrl+G 输入GetModuleHandleA+9

(第一次停下,得接着SHIFT+F9):

7C824753   74 18            JE SHORT kernel32.7C82476D  《---停在这儿了
7C824755   FF75 08          PUSH DWORD PTR SS:[EBP+8]
7C824758   E8 C2040000      CALL kernel32.7C824C1F
7C82475D   85C0             TEST EAX,EAX
7C82475F   74 08            JE SHORT kernel32.7C824769
7C824761   FF70 04          PUSH DWORD PTR DS:[EAX+4]
7C824764   E8 CD090000      CALL kernel32.GetModuleHandleW
7C824769   5D               POP EBP
7C82476A   C2 0400          RETN 4
7C82476D   64:A1 18000000   MOV EAX,DWORD PTR FS:[18]
7C824773   8B40 30          MOV EAX,DWORD PTR DS:[EAX+30]
7C824776   8B40 08          MOV EAX,DWORD PTR DS:[EAX+8]
7C824779  ^EB EE            JMP SHORT kernel32.7C824769
7C82477B   90               NOP
7C82477C   90               NOP

堆栈窗口:
0012FF9C   00000000
0012FFA0   00544000  OFFSET Notepad.<模块入口点>
0012FFA4   8082E027
0012FFA8   00000000
0012FFAC   00000000
0012FFB0   7C957A5B  ntdll.7C957A5B
0012FFB4   7C82F238  kernel32.7C82F238
0012FFB8   FFFFFFFE
0012FFBC   00000009
0012FFC0   0012FFF8
0012FFC4   7C82F23B  返回到 kernel32.7C82F23B   《-----显然不是返回时机,
                              // 没出现我们的最爱ASCII "VirtualAlloc "ASCII "VirtualFree" 接着SHIFT+F9吧

0012FFC8   00000000
0012FFCC   00000000
0012FFD0   7FFD6000
0012FFD4   00000000
0012FFD8   0012FFC8
0012FFDC   B534ECE4
0012FFE0   FFFFFFFF  SEH 链尾部

SHIFT+F9多次后,一直没我们的最爱出现,发现寄存器窗口中寄存器EAX ECX。。。。都在不断变值飞一样,我想飞了已经。。。
接着提示:链太长还继续吗?继续!程序结束了。

是什么原因导致的呢?

再次载入程序,不设任何断点,也不跟随任何表达式。F9!并不会运行出我所想要的程序界面来,无论怎么按F9!看来,还是没藏好。
楼主怎么藏的呢???请教!!!!
2008-7-30 17:29
0
游客
登录 | 注册 方可回帖
返回