在来个VBcrackme!!
/:013 /:013 经常被破.已经习惯了!/:017 /:017 /:017估计要不到几分钟就会被破/:001 /:001
失败是成功之母..
老规矩哈!:loveliness: :loveliness: :loveliness: :loveliness:
最好有破文哈!~ 追码爆破不分家!
[ 本帖最后由 小生我怕怕 于 2008-8-25 15:47 编辑 ] 还是路过,/:L 这个东东比以前的多加了点调料,有点意思,精华在前面,/:017 ,不知这样可算成功了
[ 本帖最后由 x80x88 于 2008-8-25 15:02 编辑 ] /:012 哎 又被你们破了.......果然写的快的东西 就被破的快
我花了20多分钟弄的.就知道结果很快.我要好好研究下.争取写个BT点的:loveliness: :loveliness: :loveliness: 首先脱壳
━━━━━━━━━━━━━━━━━━━━━━━━━━
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"
送上菜鸟破文一篇! 小生........ /:010 /:010 /:010 /:001 /:001
下次我不会出现这些问题...下次我会隐藏好的!!:loveliness:
以为利用CMD调用MSG来..这是一个错误想法/:010 /:010 /:013
建议给小生加分啊!!
[ 本帖最后由 夜冷风 于 2008-8-25 20:28 编辑 ] 原帖由 夜冷风 于 2008-8-25 20:21 发表 https://www.chinapyg.com/images/common/back.gif
小生........ /:010 /:010 /:010 /:001 /:001
下次我不会出现这些问题...下次我会隐藏好的!!:loveliness:
以为利用CMD调用MSG来..这是一个错误想法/:010 /:010 /:013
所谓上有政策,下有对策.希望楼主的作品越来越强大! :loveliness: :loveliness: :loveliness: 好的
我会努力的 大家一起学习..HOHO
斑竹给小生加点分啊!!! 用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 编辑 ] /:018 楼上很彪悍~~~/:good
对VB ~~ 用C32找字符串往往有不错的效果~~
页:
[1]
2