CHHSun 发表于 2009-4-25 12:06

和谐了下大P同志给我的两个测试程序

本帖最后由 CHHSun 于 2009-4-25 14:44 编辑

大P就是Peace2008啦;P
程序就不公开了。
一、
爆破大P同志给我的加密码框。
输入密码,主程序才运行。
核心扫描Borland Delphi 6.0 - 7.0,也不知他加的什么!!

OD载入,下bp MessageBoxA断点,输入假码,断下后返回。(下这GetDlgItemTextA,GetDlgItem两个断点好象也行,没试)
断在这
0012F900      004A8F45    /CALL 到 MessageBoxA 来自 Builder0.004A8F3F
0012F904      000C010C    |hOwner = 000C010C ('LC Crypto :: v0.1 by LC',class='LCCrypto32')
0012F908      004A8745    |Text = "密码不正确,请重新输入!"
0012F90C      004A8681    |Title = "LC Crypto :: v0.1 by LC"
0012F910      00000040    \Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
0012F914   /0012F940

返回到
004A8EF1      FF15 60844A00   call dword ptr ds:   ; user32.GetDlgItemTextA
004A8EF7      E8 FD000000       call Builder0.004A8FF9
004A8EFC      8D1D 6E874A00   lea ebx,dword ptr ds:[4A876E>
004A8F02      E8 1A010000       call Builder0.004A9021
004A8F07      3905 5E874A00   cmp dword ptr ds:,ea>
004A8F0D      0F9405 81884A00   sete byte ptr ds:
004A8F14      74 09             je short Builder0.004A8F1F
004A8F16      833D ED884A00 01cmp dword ptr ds:,1
004A8F1D      75 11             jnz short Builder0.004A8F30; 跳到错误提示。NOP掉不行,程序退出。
004A8F1F      6A 00             push 0
004A8F21      6A 00             push 0
004A8F23      6A 10             push 10
004A8F25      FF75 08         push dword ptr ss:
004A8F28      FF15 2C844A00   call dword ptr ds:   ; user32.PostMessageA
004A8F2E      EB 72             jmp short Builder0.004A8FA2
004A8F30      6A 40             push 40
004A8F32      68 81864A00       push Builder0.004A8681       ; ASCII "LC Crypto :: v0.1 by LC"
004A8F37      68 45874A00       push Builder0.004A8745
004A8F3C      FF75 08         push dword ptr ss:
004A8F3F      FF15 44844A00   call dword ptr ds:   ; 错误提示
004A8F45      6A 64             push 64
004A8F47      FF75 08         push dword ptr ss:
004A8F4A      FF15 78844A00   call dword ptr ds:   ; user32.GetDlgItem


我们就在
004A8EF1      FF15 60844A00   call dword ptr ds:   ; user32.GetDlgItemTextA
这一行下断吧。
在运行一次断下,F8单步向个走。

004A8EEE      FF75 08         push dword ptr ss:
004A8EF1      FF15 60844A00   call dword ptr ds:               ; user32.GetDlgItemTextA
004A8EF7      E8 FD000000       call Builder0.004A8FF9
004A8EFC      8D1D 6E874A00   lea ebx,dword ptr ds:            ; 假码出现
004A8F02      E8 1A010000       call Builder0.004A9021
004A8F07      3905 5E874A00   cmp dword ptr ds:,eax            ; 比较
004A8F0D      0F9405 81884A00   sete byte ptr ds:                  ; 辅助窗口中显示条件为假FALSE,改为true
004A8F14      74 09             je short Builder0.004A8F1F               ; 等于真码就跳。这里我们让他跳过
004A8F16      833D ED884A00 01cmp dword ptr ds:,1
004A8F1D      75 11             jnz short Builder0.004A8F30                ; 跳到错误提示。这地方NOP掉程序关闭。
004A8F1F      6A 00             push 0
004A8F21      6A 00             push 0

关键地方到了。下面改

把004A8F0D      0F9405 81884A00   sete byte ptr ds:
改为004A8F0D      0F9505 81884A00   setne byte ptr ds:

把004A8F14       /74 09             je short Builder0.004A8F1F         
改为004A8F14       /EB 09             jmp short Builder0.004A8F1F      


保存一份。运行看看。OK了。



二、
测试大P同志的加密解密程序的一点记录.
程序VB,密码正确的话解密出来的程序能运行,如果爆破错提示框的话解出来的程序不能运行.
到底怎么办呢.看我下面的记录.

OD载入,下bp rtcMsgBox断点.运行程序输入假码,F9,中断在

堆栈:
0012F324      734916CA    MSVBVM60.__vbaVarDup
0012F328      0040663E    返回到 工程1.0040663E 来自 MSVBVM60.rtcMsgBox 在这里返回
0012F32C      0012F3D4

返回到程序领空向上找看是哪个跳跳向错的
004065B8      6A 00             push 0
004065BA      FF15 B8114000   call dword ptr ds:[<&MSVBVM6>; MSVBVM60.__vbaStrComp
004065C0      66:85C0         test ax,ax
004065C3      0F84 9F000000   je 工程1.00406668            ; 这里是跳向错误,
004065C9      8B3D C0114000   mov edi,dword ptr ds:[<&MSVB>; MSVBVM60.__vbaVarDup
004065CF      B9 0A000000       mov ecx,0A


有人说了,改这个跳不就行了.对,行是行了.也可以解出来了.
但是,解出来的程序是DOS运行的东东不是原程序.也就是说不能运行.
那怎么办来
好我们看看上面的比较MSVBVM60.__vbaStrComp,在一行下断,重载断下后,看看寄存器.

004065B8      6A 00             push 0
004065BA      FF15 B8114000   call dword ptr ds:[<&MSVBVM6>; MSVBVM60.__vbaStrComp
004065C0      66:85C0         test ax,ax
004065C3      0F84 9F000000   je 工程1.00406668            ; 这里是跳向错误,
004065C9      8B3D C0114000   mov edi,dword ptr ds:[<&MSVB>; MSVBVM60.__vbaVarDup
004065CF      B9 0A000000       mov ecx,0A


EAX 0016D98C UNICODE "3794DABC9BAD5854606CB3C6D30DDBFD"这是我们的程序加密的假码
ECX 0012F404
EDX 0016DA04 UNICODE "88B795D18137E961EE37274D40F35307"这是真码,明码
EBX 73472101 MSVBVM60.__vbaRedim
在这里我们看出如果eax等于 88B795D18137E961EE37274D40F35307的话就成功.



有人说了把这一行输入不就行了.答案是非也。密码也被加密了,MD5的查不到,不知是又如何运算的.怎么办
那们就想另外一种方法,既然真码加密了存在于程序里,那我们就想办法找到假码和真码的位置,
把假的改成程序里的加密过的真码.
寄存器里出现了,离这个地方不会远的.我们向上找.

0040657E      52                push edx  我们在这里下断吧,在向上找也没意思了.
0040657F      8B55 14         mov edx,dword ptr ss:[ebp+14>
00406582      8B08            mov ecx,dword ptr ds:
00406584      52                push edx
00406585      50                push eax
00406586      FF51 2C         call dword ptr ds:
00406589      85C0            test eax,eax
0040658B      DBE2            fclex
0040658D      7D 12             jge short 工程1.004065A1
0040658F      8B4D DC         mov ecx,dword ptr ss:[ebp-24>
00406592      6A 2C             push 2C
00406594      68 34364000       push 工程1.00403634
00406599      51                push ecx
0040659A      50                push eax
0040659B      FF15 5C104000   call dword ptr ds:[<&MSVBVM6>; MSVBVM60.__vbaHresultCheckObj
004065A1      8B55 B8         mov edx,dword ptr ss:[ebp-48>
004065A4      8D4D D8         lea ecx,dword ptr ss:[ebp-28>
004065A7      C745 B8 00000000mov dword ptr ss:,0
004065AE      FFD7            call edi
004065B0      8B55 E4         mov edx,dword ptr ss:[ebp-1C>
004065B3      8B45 D8         mov eax,dword ptr ss:[ebp-28>
004065B6      52                push edx
004065B7      50                push eax
004065B8      6A 00             push 0
004065BA      FF15 B8114000   call dword ptr ds:[<&MSVBVM6>; MSVBVM60.__vbaStrComp
004065C0      66:85C0         test ax,ax
004065C3      0F84 9F000000   je 工程1.00406668            ; 跳向错误,
004065C9      8B3D C0114000   mov edi,dword ptr ds:[<&MSVB>; MSVBVM60.__vbaVarDup

重载断下.F8单步向下注意看辅助窗口.假期码出现的时候.
走在这里
004065A1      8B55 B8         mov edx,dword ptr ss:[ebp-48>

出现了
堆栈 ss:=0016D98C, (UNICODE "3794DABC9BAD5854606CB3C6D30DDBFD")
edx=0040C478 (工程1.0040C478)

下面我们就想办法把它改为88B795D18137E961EE37274D40F35307,
在上面的辅助窗口或堆栈的这个地方数据窗口中跟随数值.来到这里,看数据窗口
0016D98C33 00 37 00 39 00 34 00 44 00 41 00 42 00 43 003.7.9.4.D.A.B.C.
0016D99C39 00 42 00 41 00 44 00 35 00 38 00 35 00 34 009.B.A.D.5.8.5.4.
0016D9AC36 00 30 00 36 00 43 00 42 00 33 00 43 00 36 006.0.6.C.B.3.C.6.
0016D9BC44 00 33 00 30 00 44 00 44 00 42 00 46 00 44 00D.3.0.D.D.B.F.D.
0016D9CC00 00 62 97 5C 00 E5 5D 0B 7A 31 00 5C 00 74 00..b梊.錧 z1.\.t.
0016D9DC67 00 37 00 30 00 00 00 0D F0 AD BA AB AB AB ABg.7.0....瓠韩

0016D9FC45 07 18 00 40 00 00 00 38 00 38 00 42 00 37 00E.@...8.8.B.7.
0016DA0C39 00 35 00 44 00 31 00 38 00 31 00 33 00 37 009.5.D.1.8.1.3.7.
0016DA1C45 00 39 00 36 00 31 00 45 00 45 00 33 00 37 00E.9.6.1.E.E.3.7.
0016DA2C32 00 37 00 34 00 44 00 34 00 30 00 46 00 33 002.7.4.D.4.0.F.3.
0016DA3C35 00 33 00 30 00 37 00 00 00 62 97 5C 00 E5 5D5.3.0.7...b梊.錧
0016DA4C0B 7A 31 00 5C 00 74 00 67 00 37 00 30 00       z1.\.t.g.7.0.

把真码二进制复制粘到假码的位置

0016D98C38 00 38 00 42 00 37 00 39 00 35 00 44 00 31 008.8.B.7.9.5.D.1.
0016D99C38 00 31 00 33 00 37 00 45 00 39 00 36 00 31 008.1.3.7.E.9.6.1.
0016D9AC45 00 45 00 33 00 37 00 32 00 37 00 34 00 44 00E.E.3.7.2.7.4.D.
0016D9BC34 00 30 00 46 00 33 00 35 00 33 00 30 00 37   4.0.F.3.5.3.0.7

0016D9FC45 07 18 00 40 00 00 00 38 00 38 00 42 00 37 00E.@...8.8.B.7.
0016DA0C39 00 35 00 44 00 31 00 38 00 31 00 33 00 37 009.5.D.1.8.1.3.7.
0016DA1C45 00 39 00 36 00 31 00 45 00 45 00 33 00 37 00E.9.6.1.E.E.3.7.
0016DA2C32 00 37 00 34 00 44 00 34 00 30 00 46 00 33 002.7.4.D.4.0.F.3.
0016DA3C35 00 33 00 30 00 37 00 00 00 62 97 5C 00 E5 5D5.3.0.7...b梊.錧
0016DA4C0B 7A 31 00 5C 00 74 00 67 00 37 00 30 00       z1.\.t.g.7.0.
这样就相等了吧.

运行程序解码成功程序打开.

总结:

爆破不一定改跳转就行.

szdjcn 发表于 2009-4-25 13:33

哥哥我路过一下。。。。发现错别字

CHHSun 发表于 2009-4-25 13:39

改改,一共两个错字,不上学连字都写错

wf8057119 发表于 2009-4-25 14:40

公布一名骗子,ID:小黑冰:QQ:563482756
丘柱 (zailaimaimai@yahoo.cn) 这是他的支付宝帐号
此人骗术极其高明,不要被骗,专业以破解为名的骗子,请大家小心,
请斑竹手下留情,让更多的人知道他的行径,谢谢

wgz001 发表于 2009-4-27 06:45

世界需要和谐    :lol
页: [1]
查看完整版本: 和谐了下大P同志给我的两个测试程序