• 标 题:ASProtect V1.2脱壳——Asterisk Password Recovery XP
  • 作 者:fly
  • 时 间: 2003年9月18日 12:20
  • 链 接:http://bbs.pediy.com

ASProtect V1.2脱壳——Asterisk Password Recovery XP
 
  
 
下载页面:  http://www.fadsoft.com/ 
软件大小:  368 KB
软件语言:  英文
软件类别:  共享版 / 密码恢复
应用平台:  Win9x/NT/2000/XP
加入时间:  2002-07-11
下载次数:  18214
推荐等级:  ***

【软件简介】:星号密码克星用来读取隐藏在星号*****后面的密码,同时可以读取IE中的星号密码。

【软件限制】:30天试用、功能限制

【作者声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!

【破解工具】:Ollydbg1.09、FI、LordPE、ImportREC、RegMon

————————————————————————————————— 
【过    程】:
          
        
           
手里拿到的这个版本是以前某个朋友上传的,没有写版本号。天空上的是V 1.89版,主程序直接用ASProtect v1.2加壳,比我手里的版本少了一些特殊的东西呀,或许下面所说的UPX + RarSfx并不是作者做的。 ^O^  

apr189_portable.exe 用FI看是“UPX + RarSfx ”  晕,没见过这种混合型的东东。 :-<


后来按UPX的方法脱壳后发现…… :-)  原来 apr189_portable.exe 是用WinRAR 高级自解压 方式打包成的SFX自解压文件!然后再用UPX压缩了这个SFX文件!原来FI显示UPX + RarSfx是这个原因呀。

双击apr189_portable.exe ,程序会在C:WINDOWSTEMP下解压成RarSFX0文件夹,程序退出后会自动删除这个文件夹。早知道UPX也就没必要脱了。好了,在调试时把RarSFX0复制出来,里面有5个文件:AsteriskPR.exe、apr.ani、gotit.wav、help.htm、mousehook.dll。真正的主程序是AsteriskPR.exe!用FI看是ASProtect V1.2壳。呵呵,真是用了不少心思呀!:-)   这个东东可以用CasprGui自动脱壳,比较完美啦,比我手脱的要小不少。


呵呵,PEID 0.8也能找到这个东东的OEP,:-) 试试用Ollydbg手动脱壳吧,虽然这个版本的ASProtect已被大侠们脱过N次了,但毕竟自己做一次才能更好的学习呀。 :-D

———————————————————————
一、脱壳 


00401000       68 01C04000        push ASTERISK.0040C001
                                  ====>进入OD后断在这!

00401005       C3                 retn

F9运行,程序会在异常处中断。

00DB009D     3100                 xor dword ptr ds:[eax],eax
                                  ====>第一个异常

00DB009F     EB 01                jmp short 00DB00A2


Shift+F9通过异常,20次程序运行。好了,Try Again,按19次Shift+F9,停下来。


00DC24E1     60                   pushad
00DC24E2     A3 29B12F03          mov dword ptr ds:[32FB129],eax
00DC24E7     C490 60E80600        les edx,fword ptr ds:[eax+6E860]
00DC24ED     0000                 add byte ptr ds:[eax],al
00DC24EF     8B6424 08            mov esp,dword ptr ss:[esp+8]
                                  ====>堆栈区的第二条地址        下断点!

00DC24F3     EB 0C                jmp short 00DC2501
00DC24F5     33F6                 xor esi,esi
00DC24F7     64:FF36              push dword ptr fs:[esi]
00DC24FA     64:8926              mov dword ptr fs:[esi],esp
00DC24FD     FF06                 inc dword ptr ds:[esi]
                                  ====>第19次异常在这儿!          :-)
                                  ====>看看堆栈区的第二条地址是:00DC24EF  F2设断

00DC24FF   ^ EB E8                jmp short 00DC24E9
00DC2501     05 ACA78DB2          add eax,B28DA7AC
00DC2506     E8 09000000          call 00DC2514
                                  ====>变形JMP!F7走进

00DC250B     23C5                 and eax,ebp
00DC250D     48                   dec eax
00DC250E     E9 05000000          jmp 00DC2518
                                  ====>最后从这跳下去!

00DC2513     90                   nop
00DC2514     C1E0 F7              shl eax,0F7
00DC2517     C3                   retn
                                  ====>返回00DC250B


在00DC24EF处设断后,Shift+F9运行,程序会中断在00DC24EF
F7走,会从00DC2517处返回00DC250B,再跳到00DC2518处!


00DC2518     2BC9                 sub ecx,ecx
00DC251A     64:8F01              pop dword ptr fs:[ecx] ; 00DC2870
00DC251D     59                   pop ecx
00DC251E     E8 00000000          call 00DC2523
00DC2523     98                   cwde
00DC2524     8B2C24               mov ebp,dword ptr ss:[esp]
00DC2527     58                   pop eax
00DC2528     81ED AB28BD00        sub ebp,0BD28AB
00DC252E     1BC6                 sbb eax,esi
00DC2530     B9 F1AD8DB2          mov ecx,B28DADF1
00DC2535     81F1 A78530B2        xor ecx,B23085A7
00DC253B     33C6                 xor eax,esi
00DC253D     03CD                 add ecx,ebp
00DC253F     B8 15B08DB2          mov eax,B28DB015
00DC2544     8BF8                 mov edi,eax
00DC2546     81EF 0FB08DB2        sub edi,B28DB00F
00DC254C     23C2                 and eax,edx
00DC254E     BB ADA38DB2          mov ebx,B28DA3AD
00DC2553     C1C0 BA              rol eax,0BA
00DC2556     3119                 xor dword ptr ds:[ecx],ebx
00DC2558     83EF 01              sub edi,1
00DC255B     8BC3                 mov eax,ebx
00DC255D     05 D1A38DB2          add eax,B28DA3D1
00DC2562     93                   xchg eax,ebx
00DC2563     F8                   clc
00DC2564     41                   inc ecx
00DC2565     41                   inc ecx
00DC2566     41                   inc ecx
00DC2567     41                   inc ecx
00DC2568     B8 00000000          mov eax,0
00DC256D     48                   dec eax
00DC256E     03C7                 add eax,edi
00DC2570   ^ 79 E4                jns short 00DC2556
                                  ====>F4下去

00DC2572     40                   inc eax
00DC2573     61                   popad
00DC2574     0BC5                 or eax,ebp
00DC2576     48                   dec eax
00DC2577     C3                   retn
                                  ====>返回到00DC24CE


00DC24CE     5B                   pop ebx           ;ASTERISK.00400000
00DC24CF     58                   pop eax
00DC24D0     05 AA2CE3A4          add eax,A4E32CAA
00DC24D5     5C                   pop esp
00DC24D6     0BC9                 or ecx,ecx
00DC24D8   ^ 74 E3                je short 00DC24BD
00DC24DA     8901                 mov dword ptr ds:[ecx],eax
00DC24DC     03C3                 add eax,ebx
                                  ====>EAX=000045A6 + 00400000=004045A6   这就是OEP值  :-)

00DC24DE     894424 1C            mov dword ptr ss:[esp+1C],eax
00DC24E2     61                   popad
00DC24E3     FFE0                 jmp eax
                                  ====>跳向OEP


———————————————————————
004045A6       55                 db 55  
                                  ====>在这儿用LordPE完全DUMP这个进程

004045A7       8B                 db 8B
004045A8       EC                 db EC
004045A9       6A                 db 6A  


———————————————————————

重新运行程序,运行ImportREC,选择这个进程。把OEP改为000045A6,点IT AutoSearch,点“Get Import”,有一个函数手动修复之后无效,用ASProtect 1.22的插件追踪也不行:  :-(
FThunk: 00005328  NbFunc: 00000001
0  00005328  ?  0000  00401000

索性就这样FixDump,却正常运行!:-)  73K ->104K
 


————————————————————————————————— 
二、关于破解


程序的30天试用是用ASProtect做的限制,脱完壳后就取消试用期了。

或者把注册表中的:
[HKEY_CLASSES_ROOTCLSID{9F0BB62D-07DF-6011-4495-DE6C8C1F2D37}]
@="8A31RyvX"  删除。也可以把8A31RyvX改成:JvZwZi8fBQjZeL/K


调试的时候在内存中发现这段代码:   :-)  不清楚这是哪个作者留的   :-P

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

00DC28A0  50 6C 65 61 73 65 20 64 6F 6E 74 20 63 72 61 63  Please dont crac
00DC28B0  6B 20 69 74 20 74 68 61 6E 6B 20 79 6F 75 20 69  k it thank you i
00DC28C0  66 20 79 6F 75 20 6E 65 65 64 20 61 20 72 65 67  f you need a reg
00DC28D0  69 73 74 65 72 20 63 6F 70 79 20 70 6C 65 61 73  ister copy pleas
00DC28E0  65 20 6C 65 74 20 6D 65 20 6B 6E 6F 77 00 78 52  e let me know

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

这个东东保护的不错,或许是不完全版。看了一会儿没能找到好的突破口,算了吧,该休息了。:-(


BTW:某些程序反RegMon、FileMon,这个东东就KILL掉RegMon,我们可以对程序动手术,但这样碰到一个就要改一次,也不好找到关键的地方;所以我们可以把自己的RegMon、FileMon修改一下,让程序认不出来,呵呵。 :-)


—————————————————————————————————
    
                                
         ,     _/ 
        /| _.-~/            _     ,        青春都一饷
       ( /~   /              ~-._ |
       `\  _/                   ~ )          忍把浮名 
   _-~~~-.)  )__/;;,.          _  //'
  /'_,   --~    ~~~-  ,;;___(  (.-~~~-.        换了破解轻狂
 `~ _( ,_..-- (     ,;'' /    ~--   /._` 
  /~~//'   /' `~         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`    `\~~   
                         "     "   "~'  ""

    

                    Cracked By 巢水工作坊——fly [OCN][FCG]

                           2003-09-16  22:40