首页
社区
课程
招聘
[旧帖] [求助]OD到了这里不知道应该怎么跟了。 0.00雪花
发表于: 2008-8-2 17:05 3679

[旧帖] [求助]OD到了这里不知道应该怎么跟了。 0.00雪花

2008-8-2 17:05
3679
00524C50  /$  6A FF         push    -1
00524C52  |.  68 90706600   push    00667090
00524C57  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
00524C5D  |.  50            push    eax
00524C5E  |.  83EC 3C       sub     esp, 3C
00524C61  |.  A1 70E67300   mov     eax, dword ptr [73E670]
00524C66  |.  33C4          xor     eax, esp
00524C68  |.  894424 38     mov     dword ptr [esp+38], eax
00524C6C  |.  53            push    ebx
00524C6D  |.  55            push    ebp
00524C6E  |.  56            push    esi
00524C6F  |.  57            push    edi
00524C70  |.  A1 70E67300   mov     eax, dword ptr [73E670]
00524C75  |.  33C4          xor     eax, esp
00524C77  |.  50            push    eax
00524C78  |.  8D4424 50     lea     eax, dword ptr [esp+50]          ;  !!!
00524C7C  |.  64:A3 0000000>mov     dword ptr fs:[0], eax
00524C82  |.  8B7C24 64     mov     edi, dword ptr [esp+64]          ;   *
00524C86  |.  8BE9          mov     ebp, ecx                         ;  .
00524C88  |.  8B4C24 60     mov     ecx, dword ptr [esp+60]
00524C8C  |.  33DB          xor     ebx, ebx
00524C8E  |.  3BCB          cmp     ecx, ebx
00524C90  |.  75 0A         jnz     short 00524C9C
00524C92  |.  B8 B86F6800   mov     eax, 00686FB8
00524C97  |.  E9 C3000000   jmp     00524D5F
00524C9C  |>  8BC1          mov     eax, ecx
00524C9E  |.  C74424 48 0F0>mov     dword ptr [esp+48], 0F
00524CA6  |.  895C24 44     mov     dword ptr [esp+44], ebx
00524CAA  |.  885C24 34     mov     byte ptr [esp+34], bl
00524CAE  |.  8D70 01       lea     esi, dword ptr [eax+1]
00524CB1  |>  8A10          /mov     dl, byte ptr [eax]
00524CB3  |.  83C0 01       |add     eax, 1
00524CB6  |.  3AD3          |cmp     dl, bl
00524CB8  |.^ 75 F7         \jnz     short 00524CB1
00524CBA  |.  2BC6          sub     eax, esi
00524CBC  |.  50            push    eax                              ;  0012F554
00524CBD  |.  51            push    ecx
00524CBE  |.  8D4C24 38     lea     ecx, dword ptr [esp+38]
00524CC2  |.  E8 C9CFEDFF   call    00401C90
00524CC7  |.  837C24 48 10  cmp     dword ptr [esp+48], 10
00524CCC  |.  8B4C24 34     mov     ecx, dword ptr [esp+34]
00524CD0  |.  895C24 58     mov     dword ptr [esp+58], ebx
00524CD4  |.  73 04         jnb     short 00524CDA
00524CD6  |.  8D4C24 34     lea     ecx, dword ptr [esp+34]
00524CDA  |>  8BC1          mov     eax, ecx
00524CDC  |.  C74424 2C 0F0>mov     dword ptr [esp+2C], 0F
00524CE4  |.  895C24 28     mov     dword ptr [esp+28], ebx
00524CE8  |.  885C24 18     mov     byte ptr [esp+18], bl
00524CEC  |.  8D70 01       lea     esi, dword ptr [eax+1]
00524CEF  |.  90            nop
00524CF0  |>  8A10          /mov     dl, byte ptr [eax]
00524CF2  |.  83C0 01       |add     eax, 1
00524CF5  |.  3AD3          |cmp     dl, bl
00524CF7  |.^ 75 F7         \jnz     short 00524CF0
00524CF9  |.  2BC6          sub     eax, esi
00524CFB  |.  50            push    eax        
00524CFC  |.  51            push    ecx
00524CFD  |.  8D4C24 1C     lea     ecx, dword ptr [esp+1C]       
00524D01  |.  E8 8ACFEDFF   call    00401C90                      
00524D06  |.  8D4424 14     lea     eax, dword ptr [esp+14]


问题就是出现在这里
00524D06  |.  8D4424 14     lea     eax, dword ptr [esp+14]
这里的esp+14,应该是
00524C6C  |.  53            push    ebx
这个上一个的push,可是却用了一个
sub     esp, 3C

这样开出一个3C的空间,里面的数据应该怎么确定呢?
这个esp+14怎么计算呢?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 415
活跃值: (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
esp+14是新开辟的堆栈空间首地址,空间里面的内容不固定,认为初始值为0是不现实的。
2008-8-2 18:50
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我没有认为这个是0啊……
2008-8-2 19:10
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
4

[呼叫前]    lea     ecx, dword ptr [esp+1C]

  ecx   esp+0
  eax   esp+4
  eax   esp+8
  edi   esp+C
  esi   esp+10
  ebp   esp+14
  ebx   esp+18
  ----------  <- esp+1C
  Size = 3C
  ----------
  eax
  00667090
  -1

[呼叫后]    lea     ecx, dword ptr [esp+14]

  eax   esp+0
  edi   esp+4
  esi   esp+8
  ebp   esp+C
  ebx   esp+10
  ----------  <- esp+14
  Size = 3C
  ----------
  eax
  00667090
  -1
2008-8-2 19:31
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=sessiondiy;490651][呼叫前]    lea     ecx, dword ptr [esp+1C]
...[/QUOTE]

这个我也看到了,可是仍然是无法确定esp+14的值啊

我感觉这个写法好像是调用了前面在堆栈里用过的数据,虽然为了满足堆栈平衡,前面的数据的esp指针已经指回了原处,但是堆栈里面的数据还存在,所以有可能是调用这块的数据。但是如果是这样的话,那么这个数据就更难确定了。 鬼知道究竟那个指令曾经往这个堆栈的地址写过数据……

哦,对了,我感觉应该这样写
  eax   esp+0
  edi   esp+4
  esi   esp+8
  ebp   esp+C
  ebx   esp+10
  ----------  
  Size = 3C
  ----------     <- esp+14、esp+1C
  eax
  00667090
  -1
2008-8-2 19:40
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
6
昏. 程式都在你手上用OD跟了.
00401C90 干嘛用的?

这样开出一个3C的空间,里面的数据应该怎么确定呢?
这个esp+14怎么计算呢?

var 空间
Compiler算的
2008-8-2 22:02
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
从调试的情况来看,00401C90不影响任何的数据。不能说什么都不干,至少不会影响那个esp+1C
2008-8-6 15:51
0
游客
登录 | 注册 方可回帖
返回
//