首页
社区
课程
招聘
我刚学会和大家分享!脱ASP1.XX-2.xx的心得!
发表于: 2005-9-1 20:06 5994

我刚学会和大家分享!脱ASP1.XX-2.xx的心得!

2005-9-1 20:06
5994
==========================================================================
对1.00D脱壳手记!――整理

                                                     -by mening
==========================================================================
第一寻找OEP
---------------------------------------------------------------------------
//OD
00401000 m>  68 0140CC07         push main.07CC4001
00401005     E8 01000000         call main.0040100B
0040100A     C3                  retn
0040100B     C3                  retn

---------------------------------------------------------------------------
//26次异常后!在25次异常时F8就可以跟到OEP!这里是我的方法!
或者是CTRL+M打开内存在4010000下内存访问断点同样能到OEP这里补充一下!看你喜欢什么了。。。
0C6639EC     3100                xor dword ptr ds:[eax],eax //从这里LORDPE然后重建PE头!才可以要不120MB很头大的。
0C6639EE     64:8F05 00000000    pop dword ptr fs:[0]
0C6639F5     58                  pop eax
0C6639F6     833D B07E660C 00    cmp dword ptr ds:[C667EB0],0
0C6639FD     74 14               je short 0C663A13
0C6639FF     6A 0C               push 0C
0C663A01     B9 B07E660C         mov ecx,0C667EB0
0C663A06     8D45 F8             lea eax,dword ptr ss:[ebp-8]
0C663A09     BA 04000000         mov edx,4
0C663A0E     E8 2DD1FFFF         call 0C660B40
0C663A13     FF75 FC             push dword ptr ss:[ebp-4]
0C663A16     FF75 F8             push dword ptr ss:[ebp-8]
0C663A19     8B45 F4             mov eax,dword ptr ss:[ebp-C]
0C663A1C     8338 00             cmp dword ptr ds:[eax],0
0C663A1F     74 02               je short 0C663A23
0C663A21     FF30                push dword ptr ds:[eax]
0C663A23     FF75 F0             push dword ptr ss:[ebp-10]
0C663A26     FF75 EC             push dword ptr ss:[ebp-14]
0C663A29     C3                  retn  //F2下断 SHIFT+F9运行到这里 F2取消断点
---------------------------------------------------------------------------
此时,堆载中的东东为:
0012FF5C    0C67A6AC
0012FF60    00400000  main.00400000
0012FF64    BEC6080D
0012FF68    0012FFA4  //ESP定律0012FFA4+C=12FF68
0012FF6C    0C650000
0012FF70    0C630000
0012FF74    0C664138
0012FF78    0C670E88
0012FF7C    0C67A6AC
0012FF80    00400000  main.00400000

此时在命令处下断 HR 0012FF68
SHIFT+F9运行!
0C67A32C    /EB 44               jmp short 0C67A372  //F8跟入
0C67A32E    |EB 01               jmp short 0C67A331
0C67A330    |9A 51579CFC BF00    call far 00BF:FC9C5751
0C67A337    |0000                add byte ptr ds:[eax],al
0C67A339    |00B9 00000000       add byte ptr ds:[ecx],bh
0C67A33F    |F3:AA               rep stos byte ptr es:[edi]
0C67A341    |9D                  popfd
0C67A342    |5F                  pop edi
0C67A343    |59                  pop ecx
0C67A344    |C3                  retn

//飞向光明之顶
0C67A372     03C3                add eax,ebx
0C67A374     BB 4F010000         mov ebx,14F
0C67A379     0BDB                or ebx,ebx
0C67A37B     75 07               jnz short 0C67A384
0C67A37D     894424 1C           mov dword ptr ss:[esp+1C],eax
0C67A381     61                  popad
0C67A382     50                  push eax
0C67A383     C3                  retn
0C67A384     E8 00000000         call 0C67A389
0C67A389     5D                  pop ebp
0C67A38A     81ED 4DE14B00       sub ebp,4BE14D

//按F8走
006366F8     E8 797B0000         call main.0063E276  //F8来这里!!
006366FD     8945 9C             mov dword ptr ss:[ebp-64],eax
00636700     F645 D0 01          test byte ptr ss:[ebp-30],1
00636704     74 06               je short main.0063670C
00636706     0FB745 D4           movzx eax,word ptr ss:[ebp-2C]
0063670A     EB 03               jmp short main.0063670F

//往上看哦!

0063663D     FF62 14             jmp dword ptr ds:[edx+14]
00636640     C3                  retn
00636641     0000                add byte ptr ds:[eax],al  //这个是真的!
00636643     0000                add byte ptr ds:[eax],al
00636645     0000                add byte ptr ds:[eax],al
00636647     0000                add byte ptr ds:[eax],al
00636649     0000                add byte ptr ds:[eax],al
0063664B     0000                add byte ptr ds:[eax],al
0063664D     0000                add byte ptr ds:[eax],al
0063664F     0000                add byte ptr ds:[eax],al
00636651     0000                add byte ptr ds:[eax],al
00636653     0000                add byte ptr ds:[eax],al
00636655     0000                add byte ptr ds:[eax],al
00636657     0000                add byte ptr ds:[eax],al
00636659     0000                add byte ptr ds:[eax],al
0063665B     0000                add byte ptr ds:[eax],al
0063665D     0000                add byte ptr ds:[eax],al
0063665F     0000                add byte ptr ds:[eax],al
00636661     0000                add byte ptr ds:[eax],al
00636663     0000                add byte ptr ds:[eax],al
00636665     0000                add byte ptr ds:[eax],al
00636667     FF15 FCB06400       call dword ptr ds:[64B0FC]  //看见这个OEP了吗?这个是假的!曾经好几次看到就因为疏忽没有减-00400000因此,被误为错误!!
0063666D     33D2                xor edx,edx
0063666F     8AD4                mov dl,ah
00636671     8915 A8F4CB07       mov dword ptr ds:[7CBF4A8],edx
-------------------------------------------------------------------------------------
二、现在我们修复
不用多说了只要用IMPORTREC就可以了,恩记得修复指针哦!可以用右键里的插件!
最后了用WINHEX打开!查找
E8FF15FCB0640033D28AD48915A8F4CB078BC881E1FF
在这个前面将一串0改为以下的内容建立文件头!
558BEC6AFF680004650068D0A1630064A100000000506489250000000083EC585356578965E8
现在可以点击运行MAIN了而且大小是2.50MB恩我在官服没出现广告,也没什么掉线!
希望大家测试一下!
基本上在官方正常!

0C67A06C     896C24 00       mov dword ptr ss:[esp],ebp*

0C67A070     8BEC            mov ebp,esp*
0C67A072     6A FF           push -1*
0C67A074     68 00046500     push 650400*
0C67A079     68 D0A16300     push 63A1D0*
0C67A07E     64:A1 00000000  mov eax,dword ptr fs:[0]*

0C67A0A6     894424 00       mov dword ptr ss:[esp],eax*
0C67A0AA     64:8925 0000000>mov dword ptr fs:[0],esp*
0C67A0B1     83EC 58         sub esp,58*
0C67A0D6     895C24 00       mov dword ptr ss:[esp],ebx

0C67A0FC     897424 00       mov dword ptr ss:[esp],esi

0C67A122     897C24 00       mov dword ptr ss:[esp],edi               ; main.005616A8
0C67A126     8965 E8         mov dword ptr ss:[ebp-18],esp*
//以上是我找到的现在我们将部分代码还原化!
原码:
                            PUSH EBP *
0C4CA688    8BEC            MOV EBP,ESP
0C4CA68A    6A FF           PUSH -1
0C4CA68C    68 00046500     PUSH 650400 //这个是破解文件的,
0C4CA691    68 D0A16300     PUSH 63A1D0 //看具体情况!!
                            MOV EAX,DWORD PTR FS:[0] *
                            PUSH EAX  *
                            MOV DWORD PTR FS:[0],ESP *
                            SUB ESP,58 *
                            PUSH EBX *
                            PUSH ESI *
                              push edi*
                            MOV DWORD PTR SS:[EBP-18],ESP  *

//不添这个程序无法正常运行!这个是PE头!
这个就是我们要改的文件头如果你改PUSH EBP为mov dword ptr ss:[esp],ebp这个也可以是等效的。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1667
活跃值: (286)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
再破解一下后面的自动打开网页的尾巴!!
//去掉网页

文本字符串参考位于 main:,项目 595
地址=00499931
反汇编=push main.006588D8
文本字符串=ASCII "www.muchina.com/pop.html"

文本字符串参考位于 main:,项目 594
地址=0049991F
反汇编=mov edi,main.006588D8
文本字符串=ASCII "www.muchina.com/pop.html"

0049991F   |.  BF D8886500   mov edi,main.006588D8                 ;  ASCII "www.muchina.com/pop.html"
00499924   |.  83C9 FF       or ecx,FFFFFFFF
00499927   |.  33C0          xor eax,eax
00499929   |.  F2:AE         repne scas byte ptr es:[edi]
0049992B   |.  F7D1          not ecx
0049992D   |.  83C1 FF       add ecx,-1
00499930   |.  51            push ecx                              ; /Arg2
00499931   |.  68 D8886500   push main.006588D8                    ; |Arg1 = 006588D8 ASCII "www.muchina.com/pop.html"
00499936   |.  8D8D 60E7FFFF lea ecx,dword ptr ss:[ebp-18A0]       ; |
0049993C   |.  E8 8F8CF9FF   call main.004325D0  ; \main.004325D0

------------------------------
将上面的004325D0改为00636785直接调用退出进程API退出来不知道有什么不托~!
004325D0   /$  55            push ebp
004325D1   |.  8BEC          mov ebp,esp
004325D3   |.  53            push ebx
004325D4   |.  56            push esi
004325D5   |.  8B75 0C       mov esi,dword ptr ss:[ebp+C]
004325D8   |.  8BD9          mov ebx,ecx
004325DA   |.  83FE FD       cmp esi,-3
004325DD   |.  76 05         jbe short main.004325E4
004325DF   |.  E8 97102000   call main.0063367B

0063367B   /$  B8 80A76400   mov eax,main.0064A780
00633680   |.  E8 873F0000   call main.0063760C

文本字符串参考位于 main:,项目 5754
地址=00646900
反汇编=mov edi,main.006696BC
文本字符串=ASCII "HTTP\shell\open\command"

文本字符串参考位于 main:,项目 5755
地址=00646910
反汇编=push main.006696BC
文本字符串=ASCII "HTTP\shell\open\command"

文本字符串参考位于 main:,项目 5756
地址=00646B5C
反汇编=mov dword ptr ss:[ebp-94],main.00663914
文本字符串=ASCII "open"

00636785   |.  59            pop ecx
00636786   |.  68 FF000000   push 0FF                              ; /ExitCode = FF
0063678B   \.  FF15 00B16400 call dword ptr ds:[<&kernel32.ExitPro>; \ExitProcess
00636791    .  C3            retn

======================================================================================

初次成功!破解结束!!!   
                                                                   -menting
=======================================================================================
2005-9-1 20:07
0
雪    币: 1667
活跃值: (286)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
只是学习没有其他,行为请不要用于他途否则后果自负
2005-9-1 20:08
0
雪    币: 223
活跃值: (106)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
2.xx的心得呢?
2005-9-1 23:15
0
雪    币: 513
活跃值: (2258)
能力值: ( LV9,RANK:2130 )
在线值:
发帖
回帖
粉丝
5
只是个asprotect 1.23 rc的,不是aspr 1.3x或aspr 2.x的
2005-9-2 00:02
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
鼓励一下!
2005-9-2 07:29
0
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
7
楼主UPX没能搞定,就去搞定ASP1.XX-2.xx,厉害
2005-9-2 07:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
支持,谢谢分享
2005-9-2 09:57
0
雪    币: 136
活跃值: (105)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
9
高手啊 我记得这个壳好象有人脱过的 ,记忆中 pesin的作者!!
2005-9-3 09:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主好强,我也正在学这样的
可以一起讨论吗?
qq53837008
2005-9-4 08:54
0
游客
登录 | 注册 方可回帖
返回
//