夜冷风 发表于 2008-8-25 12:09:27

在来个VBcrackme!!

/:013 /:013 经常被破.已经习惯了!/:017 /:017 /:017
估计要不到几分钟就会被破/:001 /:001
失败是成功之母..
老规矩哈!:loveliness: :loveliness: :loveliness: :loveliness:
最好有破文哈!~

小生我怕怕 发表于 2008-8-25 13:26:01

追码爆破不分家!

[ 本帖最后由 小生我怕怕 于 2008-8-25 15:47 编辑 ]

x80x88 发表于 2008-8-25 14:49:16

还是路过,/:L 这个东东比以前的多加了点调料,有点意思,精华在前面,/:017 ,不知这样可算成功了


[ 本帖最后由 x80x88 于 2008-8-25 15:02 编辑 ]

夜冷风 发表于 2008-8-25 15:10:14

/:012 哎 又被你们破了.......果然写的快的东西 就被破的快
我花了20多分钟弄的.就知道结果很快.我要好好研究下.争取写个BT点的:loveliness: :loveliness: :loveliness:

小生我怕怕 发表于 2008-8-25 19:06:42

首先脱壳
━━━━━━━━━━━━━━━━━━━━━━━━━━
0043F001 >9C            pushfd         //OD载入
0043F002    60            pushad
0043F003    70 61         jo short crackme.0043F066
0043F005    636B 24         arpl word ptr ds:,bp
0043F008    40            inc eax
0043F009    33C0            xor eax,eax
0043F00B    61            popad
0043F00C    9D            popfd
0043F00D    60            pushad
0043F00E    E8 00000000   call crackme.0043F013       //在此执行ESP定律
━━━━━━━━━━━━━━━━━━━━━━━━━━
0043F3B5^\EB FB         jmp short crackme.0043F3B2//这个跳转让他向上跳
0043F3B7^ EB EB         jmp short crackme.0043F3A4
0043F3B9    0068 68         add byte ptr ds:,ch
0043F3BC    41            inc ecx
0043F3BD    40            inc eax
0043F3BE    00C3            add bl,al
0043F3C0    8B85 26040000   mov eax,dword ptr ss:
━━━━━━━━━━━━━━━━━━━━━━━━━━
0043F3B2   /EB 04         jmp short crackme.0043F3B8//然后程序停在这里
0043F3B4   |61            popad
0043F3B5^|EB FB         jmp short crackme.0043F3B2
0043F3B7^|EB EB         jmp short crackme.0043F3A4
0043F3B9    0068 68         add byte ptr ds:,ch
0043F3BC    41            inc ecx
0043F3BD    40            inc eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0043F3B8   /EB 00         jmp short crackme.0043F3BA
0043F3BA   \68 68414000   push crackme.00404168
0043F3BF    C3            retn         //这里直接跳向我们的OEP啦
━━━━━━━━━━━━━━━━━━━━━━━━━━
00404168    68 C8584000   push crackme.004058C8   //到达OEP,标准的OEP
0040416D    E8 F0FFFFFF   call crackme.00404162   //此时dump程序吧
00404172    0000            add byte ptr ds:,al
00404174    40            inc eax
00404175    0000            add byte ptr ds:,al
00404177    0030            add byte ptr ds:,dh
━━━━━━━━━━━━━━━━━━━━━━━━━━
现在程序报错提示:
兄弟,你又非法修改我的程序了
━━━━━━━━━━━━━━━━━━━━━━━━━━
用C32Asm加载程序----查看----字符串
在选择 编辑——使用Unicode分析字符串
XOR   EAX, 43000420                  
::00401005::200400                   AND   BYTE PTR , AL         
::00401008::53                     PUSH    EBX                           
::00401009::200400                   AND   BYTE PTR , AL         
::0040100C::60                     PUSHAD                                 
::0040100D::200400                   AND   BYTE PTR , AL         
::00401010::6920 04007620            IMUL    ESP, DWORD PTR , 20760004
::00401016::04 00                  ADD   AL, 0                           
::00401018::8320 04                  AND   DWORD PTR , 4            
::0040101B::0092 200400A1            ADD   BYTE PTR , DL   
━━━━━━━━━━━━━━━━━━━━━━━━━━
此时我们要搜索他的错误提示的对话框(兄弟,你又非法修改我的程序了)
_TrackMouseEvent
        ::00412F1C->PUSH    408E68
cmd.exe /c msg %username% /time:7 兄弟.你又非法修改我的程序了
        ::0040C262->MOV   DWORD PTR , 407B9C
cmd.exe /c msg %username% 对不起输入错误
        ::0040C421->MOV   DWORD PTR , 407C14
computername
━━━━━━━━━━━━━━━━━━━━━━━━━━
看下错误提示为0040c262提示出来的,现在我们OD加载我们脱壳后的程序
ctrl+G搜索0040c262
0040C236   . /75 5E         jnz short unpack.0040C296                  //这里改jmp跳,就可以跳过我们的错误提示
0040C238   . |8B75 08       mov esi,dword ptr ss:
0040C23B   . |8D45 8C       lea eax,dword ptr ss:
0040C23E   . |50            push eax
0040C23F   . |56            push esi
0040C240   . |8B16          mov edx,dword ptr ds:
0040C242   . |FF92 B8010000 call dword ptr ds:
0040C248   . |85C0          test eax,eax
0040C24A   . |DBE2          fclex
0040C24C   . |7D 0E         jge short unpack.0040C25C
0040C24E   . |68 B8010000   push 1B8
0040C253   . |68 107A4000   push unpack.00407A10
0040C258   . |56            push esi
0040C259   . |50            push eax
0040C25A   . |FFD3          call ebx
0040C25C   > |8D55 90       lea edx,dword ptr ss:
0040C25F   . |8D4D A0       lea ecx,dword ptr ss:
0040C262   . |C745 98 9C7B4>mov dword ptr ss:,unpack.00407B9>;//这里就是我们的错误提示
━━━━━━━━━━━━━━━━━━━━━━━━━━
此时程序可运行啦,那我们就好好想想吧,在我们刚查找unicode字符串时。那里有出现一个已破解,不防就此下手
-已破解
        ::0040C67C->PUSH    407C5C
━━━━━━━━━━━━━━━━━━━━━━━━━━
在次OD载入我们修复后出错的程序,ctrl+g搜索0040c67c
0040C637   . /0F84 B0000000 je 1.0040C6ED       //这里改JMP。即可达到爆破程序的效果
0040C63D   . |8B16          mov edx,dword ptr ds:
0040C63F   . |56            push esi
0040C640   . |FF92 00030000 call dword ptr ds:
0040C646   . |50            push eax
0040C647   . |8D45 B4       lea eax,dword ptr ss:
0040C64A   . |50            push eax
0040C64B   . |FF15 88104000 call dword ptr ds:[<&msvbvm60.__vbaObjSe>;msvbvm60.__vbaObjSet
0040C651   . |8BF8          mov edi,eax
0040C653   . |8D55 B8       lea edx,dword ptr ss:
0040C656   . |52            push edx
0040C657   . |57            push edi
0040C658   . |8B0F          mov ecx,dword ptr ds:
0040C65A   . |FF91 A0000000 call dword ptr ds:
0040C660   . |3BC3          cmp eax,ebx
0040C662   . |DBE2          fclex
0040C664   . |7D 12         jge short 1.0040C678
0040C666   . |68 A0000000   push 0A0
0040C66B   . |68 007C4000   push 1.00407C00
0040C670   . |57            push edi
0040C671   . |50            push eax
0040C672   . |FF15 60104000 call dword ptr ds:[<&msvbvm60.__vbaHresu>;msvbvm60.__vbaHresultCheckObj
0040C678   > |8B45 B8       mov eax,dword ptr ss:
0040C67B   . |50            push eax
0040C67C   . |68 5C7C4000   push 1.00407C5C   //这里为我们的错误提示错在
0040C681   . |FF15 50104000 call dword ptr ds:[<&msvbvm60.__vbaStrCa>;msvbvm60.__vbaStrCat
━━━━━━━━━━━━━━━━━━━━━━━━━━
现在我们来追码吧,ctrl+g搜索004067c,然后寻找段首
0040C4B0   > \55            push ebp         //F2下断后,在加载程序
0040C4B1   .8BEC          mov ebp,esp      //从新加载后,就运行程序
0040C4B3   .83EC 0C       sub esp,0C
0040C4B6   .68 563E4000   push <jmp.&msvbvm60.__vbaExceptHandler>;SE 句柄安装
0040C4BB   .64:A1 0000000>mov eax,dword ptr fs:
0040C4C1   .50            push eax
0040C4C2   .64:8925 00000>mov dword ptr fs:,esp
0040C4C9   .81EC 88000000 sub esp,88
0040C4CF   .53            push ebx
0040C4D0   .56            push esi
0040C4D1   .57            push edi
0040C4D2   .8965 F4       mov dword ptr ss:,esp
0040C4D5   .C745 F8 38124>mov dword ptr ss:,1.00401238
━━━━━━━━━━━━━━━━━━━━━━━━━━
我们输入用户名:fanfan
由于注册码是由输入时确定是否正确,所以我们便要直接复制我们的用户名fanfan,然后粘贴在注册码处
在我们单步跟到显示第5次注册名时,便去看看我们的堆栈窗口,出现了我们的注册码fanfan23374
因为被禁了复制程序,所以我也只能大体告诉大家几时出现注册码啦
0012E9D4   0016918CUNICODE "fanfan23374"
0012E9D8   77D3B3B4返回到 USER32.77D3B3B4
0012E9DC   00000000
0012E9E0   00000000
0012E9E4   0016B914UNICODE "fanfan"
0012E9E8   77D3B3B4返回到 USER32.77D3B3B4
0012E9EC   00000000
0012E9F0   00E83E44
0012E9F4   0016B914UNICODE "fanfan"
送上菜鸟破文一篇!

夜冷风 发表于 2008-8-25 20:21:04

小生........ /:010 /:010 /:010 /:001 /:001
下次我不会出现这些问题...下次我会隐藏好的!!:loveliness:
以为利用CMD调用MSG来..这是一个错误想法/:010 /:010 /:013
建议给小生加分啊!!

[ 本帖最后由 夜冷风 于 2008-8-25 20:28 编辑 ]

小生我怕怕 发表于 2008-8-25 20:27:56

原帖由 夜冷风 于 2008-8-25 20:21 发表 https://www.chinapyg.com/images/common/back.gif
小生........ /:010 /:010 /:010 /:001 /:001
下次我不会出现这些问题...下次我会隐藏好的!!:loveliness:
以为利用CMD调用MSG来..这是一个错误想法/:010 /:010 /:013
所谓上有政策,下有对策.希望楼主的作品越来越强大!

夜冷风 发表于 2008-8-25 20:29:15

:loveliness: :loveliness: :loveliness: 好的
我会努力的 大家一起学习..HOHO
斑竹给小生加点分啊!!!

x80x88 发表于 2008-8-25 21:11:21

用Wdasm反编译看不到有用信息,只好翻页看代码!/:011 没想到C32Asm效果好,向小生学习了!/:014
补充一点不知可对!
自校验的部分:
........
0040C1BDmov   edx, eax
0040C1BFlea   ecx, dword ptr
0040C1C2call    edi
0040C1C4push    eax                                       ; /FileName
0040C1C5call    dword ptr [<&msvbvm60.rtcFileLen>]          ; \rtcFileLen
0040C1CBmov   esi, dword ptr [<&msvbvm60.__vbaVarMove>]   ;取文件的大小,结果在EAX中
0040C1D1mov   edi, 3
0040C1D6lea   edx, dword ptr
0040C1D9lea   ecx, dword ptr
0040C1DCmov   dword ptr , eax
0040C1DFmov   dword ptr , edi
0040C1E2call    esi                                       ;<&msvbvm60.__vbaVarMove>
0040C1E4lea   edx, dword ptr
0040C1E7lea   eax, dword ptr
0040C1EApush    edx
0040C1EBlea   ecx, dword ptr
0040C1EEpush    eax
0040C1EFlea   edx, dword ptr
0040C1F2push    ecx
0040C1F3lea   eax, dword ptr
0040C1F6push    edx
0040C1F7push    eax
0040C1F8push    5
0040C1FAcall    dword ptr [<&msvbvm60.__vbaFreeStrList>]    ;msvbvm60.__vbaFreeStrList
0040C200lea   ecx, dword ptr
0040C203lea   edx, dword ptr
0040C206push    ecx
0040C207push    edx
0040C208push    2
0040C20Acall    dword ptr [<&msvbvm60.__vbaFreeObjList>]    ;msvbvm60.__vbaFreeObjList
0040C210add   esp, 24
0040C213lea   edx, dword ptr
0040C216lea   ecx, dword ptr
0040C219mov   dword ptr , 11A00                   ;原来加壳文件的大小,72192(0x11A00)字节
0040C220mov   dword ptr , edi
0040C223call    esi
0040C225lea   eax, dword ptr
0040C228lea   ecx, dword ptr
0040C22Bpush    eax                                       ; /var18
0040C22Cpush    ecx                                       ; |var28
0040C22Dcall    dword ptr [<&msvbvm60.__vbaVarTstEq>]       ; \__vbaVarTstEq
0040C233test    ax, ax
0040C236jnz   short 0040C296                              ;自校验关键跳转
..........

至于追码,因为反编译看不到可用信息,我的方法有些笨,见下
........
00406477      00      db      00
00406478   .816C24 >sub   dword ptr , 3F
00406480   .E9 DB5B>jmp   0040C060
00406485   .816C24 >sub   dword ptr , 33
0040648D      E9 7E5E>jmp   0040C310                              ;将这句改成jmp 0040C4B0
00406492   .816C24 >sub   dword ptr , 4B
0040649A   .E9 1160>jmp   0040C4B0
0040649F      00      db      00
.......
修改0040648D这句为jmp 0040C4B0,很快就可以追到真码了!

[ 本帖最后由 x80x88 于 2008-8-25 21:24 编辑 ]

magic659117852 发表于 2008-8-26 00:30:06

/:018 楼上很彪悍~~~/:good
对VB ~~ 用C32找字符串往往有不错的效果~~
页: [1] 2
查看完整版本: 在来个VBcrackme!!