首页
社区
课程
招聘
我这样脱出来的程序不能运行,麻烦帮尽快看看是怎么回事。
发表于: 2004-10-31 16:33 3903

我这样脱出来的程序不能运行,麻烦帮尽快看看是怎么回事。

2004-10-31 16:33
3903
原文件:
附件:sy.rar
用fi查出是upx的壳,心想应该可以很容易脱出来。可是脱出来的程序不能运行。

过程:
0049D920 g>  60                  pushad                      ; 壳入口
0049D921     BE 00104600         mov esi,ganmao.00461000
0049D926     8DBE 0000FAFF       lea edi,dword ptr ds:[esi+F>
0049D92C     C787 D4D40700 84096>mov dword ptr ds:[edi+7D4D4>
0049D936     57                  push edi
0049D937     83CD FF             or ebp,FFFFFFFF
0049D93A     EB 0E               jmp short ganmao.0049D94A
0049D93C     90                  nop
0049D93D     90                  nop
0049D93E     90                  nop
0049D93F     90                  nop
0049D940     8A06                mov al,byte ptr ds:[esi]
0049D942     46                  inc esi
0049D943     8807                mov byte ptr ds:[edi],al
0049D945     47                  inc edi
0049D946     01DB                add ebx,ebx
0049D948     75 07               jnz short ganmao.0049D951
0049D94A     8B1E                mov ebx,dword ptr ds:[esi]
0049D94C     83EE FC             sub esi,-4
0049D94F     11DB                adc ebx,ebx
0049D951   ^ 72 ED               jb short ganmao.0049D940    ; 往回跳
0049D953     B8 01000000         mov eax,1                   ; 选择这里,按F4 能跳出上面的循环
0049D958     01DB                add ebx,ebx
0049D95A     75 07               jnz short ganmao.0049D963
................................................
.............继续往前走

0049D9C6     01DB                add ebx,ebx
0049D9C8   ^ 73 EF               jnb short ganmao.0049D9B9
0049D9CA     75 09               jnz short ganmao.0049D9D5
0049D9CC     8B1E                mov ebx,dword ptr ds:[esi]
0049D9CE     83EE FC             sub esi,-4
0049D9D1     11DB                adc ebx,ebx
0049D9D3   ^ 73 E4               jnb short ganmao.0049D9B9
0049D9D5     83C1 02             add ecx,2
0049D9D8     81FD 00FBFFFF       cmp ebp,-500
0049D9DE     83D1 01             adc ecx,1
0049D9E1     8D142F              lea edx,dword ptr ds:[edi+e>
0049D9E4     83FD FC             cmp ebp,-4
0049D9E7     76 0F               jbe short ganmao.0049D9F8
0049D9E9     8A02                mov al,byte ptr ds:[edx]
0049D9EB     42                  inc edx
0049D9EC     8807                mov byte ptr ds:[edi],al
0049D9EE     47                  inc edi
0049D9EF     49                  dec ecx
0049D9F0   ^ 75 F7               jnz short ganmao.0049D9E9
0049D9F2   ^ E9 4FFFFFFF         jmp ganmao.0049D946         ; 这里又是一个类似的循环,想用前面的方法离开时
0049D9F7     90                  nop                         ; 在这里按F4,程序运行了。用ctrl+f2重来。

...............................................................
.......................ctrl+f2,一直运行到下面这里。
0049D9E1     8D142F              lea edx,dword ptr ds:[edi+e>
0049D9E4     83FD FC             cmp ebp,-4
0049D9E7     76 0F               jbe short ganmao.0049D9F8
0049D9E9     8A02                mov al,byte ptr ds:[edx]
0049D9EB     42                  inc edx
0049D9EC     8807                mov byte ptr ds:[edi],al
0049D9EE     47                  inc edi
0049D9EF     49                  dec ecx
0049D9F0   ^ 75 F7               jnz short ganmao.0049D9E9
0049D9F2   ^ E9 4FFFFFFF         jmp ganmao.0049D946         
//在0049D9E7那有一个跳,跳到0049d9f8刚好就能跳出这个循环,于是就云0049d9f8。按f4
0049D9F7     90                  nop                         ; 如果在这里按F4,程序运行了。用ctrl+f2重来。
.............................
.........来到这里
0049D9F8     8B02                mov eax,dword ptr ds:[edx]
0049D9FA     83C2 04             add edx,4
0049D9FD     8907                mov dword ptr ds:[edi],eax
0049D9FF     83C7 04             add edi,4
0049DA02     83E9 04             sub ecx,4
0049DA05   ^ 77 F1               ja short ganmao.0049D9F8
0049DA07     01CF                add edi,ecx
0049DA09   ^ E9 38FFFFFF         jmp ganmao.0049D946         ; 这里又有一个很大的往回跳.用f4离开这个循环.
0049DA0E     5E                  pop esi                     ; ganmao.00401000
................................
...........一直用f8
0049DA48     8B07                mov eax,dword ptr ds:[edi]
0049DA4A     09C0                or eax,eax
0049DA4C     74 3C               je short ganmao.0049DA8A
0049DA4E     8B5F 04             mov ebx,dword ptr ds:[edi+4>
0049DA51     8D8430 00E10900     lea eax,dword ptr ds:[eax+e>
0049DA58     01F3                add ebx,esi
0049DA5A     50                  push eax
0049DA5B     83C7 08             add edi,8
0049DA5E     FF96 DCE10900       call dword ptr ds:[esi+9E1D>
0049DA64     95                  xchg eax,ebp
0049DA65     8A07                mov al,byte ptr ds:[edi]
0049DA67     47                  inc edi
0049DA68     08C0                or al,al
0049DA6A   ^ 74 DC               je short ganmao.0049DA48
0049DA6C     89F9                mov ecx,edi
0049DA6E     57                  push edi
0049DA6F     48                  dec eax
0049DA70     F2:AE               repne scas byte ptr es:[edi>
0049DA72     55                  push ebp
0049DA73     FF96 E0E10900       call dword ptr ds:[esi+9E1E>
0049DA79     09C0                or eax,eax
0049DA7B     74 07               je short ganmao.0049DA84
0049DA7D     8903                mov dword ptr ds:[ebx],eax
0049DA7F     83C3 04             add ebx,4
0049DA82   ^ EB E1               jmp short ganmao.0049DA65   ; 这里又是也不能用f4过,
//看看有什么跳转能跳出这里.
//发现在0049da4c那里有个跳能跳到49da8a,刚好就跳出了这里。所以就云0049da8a按f4离开这个循环.
0049DA84     FF96 E4E10900       call dword ptr ds:[esi+9E1E>
0049DA8A     61                  popad                       ; 看到壳的出口了
0049DA8B   ^ E9 30A0FDFF         jmp ganmao.00477AC0         ; 跨断的跳转。477ac0应该就是oep了
......来到这里
00477AC0     55                  push ebp          ;在这里时用ollydbg里的插件的两种模式分别dump出来。然后用Import REConstructor修复,程序无法正常运行。
然后试着用loadPe 来dump,然后用loadPE修复。还是一样。
请问到底怎么回事?

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

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 296
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
应该是有overlay数据,请用工具粘贴至修复后的文件末尾
2004-10-31 16:47
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
什么意思?请说详细点.
2004-10-31 19:30
0
游客
登录 | 注册 方可回帖
返回
//