吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6523|回复: 4
收起左侧

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

[复制链接]
CHHSun 发表于 2009-4-25 12:06
本帖最后由 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:[4A8460]   ; 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:[4A875E],ea>
004A8F0D        0F9405 81884A00   sete byte ptr ds:[4A8881]
004A8F14        74 09             je short Builder0.004A8F1F
004A8F16        833D ED884A00 01  cmp dword ptr ds:[4A88ED],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:[ebp+8]
004A8F28        FF15 2C844A00     call dword ptr ds:[4A842C]   ; 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:[ebp+8]
004A8F3F        FF15 44844A00     call dword ptr ds:[4A8444]   ; 错误提示
004A8F45        6A 64             push 64
004A8F47        FF75 08           push dword ptr ss:[ebp+8]
004A8F4A        FF15 78844A00     call dword ptr ds:[4A8478]   ; user32.GetDlgItem


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

004A8EEE        FF75 08           push dword ptr ss:[ebp+8]
004A8EF1        FF15 60844A00     call dword ptr ds:[4A8460]                 ; 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:[4A875E],eax              ; 比较
004A8F0D        0F9405 81884A00   sete byte ptr ds:[4A8881]                  ; 辅助窗口中显示条件为假FALSE,改为true
004A8F14        74 09             je short Builder0.004A8F1F                 ; 等于真码就跳。这里我们让他跳过
004A8F16        833D ED884A00 01  cmp dword ptr ds:[4A88ED],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:[4A8881]
改为004A8F0D        0F9505 81884A00   setne byte ptr ds:[4A8881]  

把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:[eax]
00406584        52                push edx
00406585        50                push eax
00406586        FF51 2C           call dword ptr ds:[ecx+2C]
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 00000000  mov dword ptr ss:[ebp-48],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:[0012F3E4]=0016D98C, (UNICODE "3794DABC9BAD5854606CB3C6D30DDBFD")
edx=0040C478 (工程1.0040C478)

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

0016D9FC  45 07 18 00 40 00 00 00 38 00 38 00 42 00 37 00  E.@...8.8.B.7.
0016DA0C  39 00 35 00 44 00 31 00 38 00 31 00 33 00 37 00  9.5.D.1.8.1.3.7.
0016DA1C  45 00 39 00 36 00 31 00 45 00 45 00 33 00 37 00  E.9.6.1.E.E.3.7.
0016DA2C  32 00 37 00 34 00 44 00 34 00 30 00 46 00 33 00  2.7.4.D.4.0.F.3.
0016DA3C  35 00 33 00 30 00 37 00 00 00 62 97 5C 00 E5 5D  5.3.0.7...b梊.錧
0016DA4C  0B 7A 31 00 5C 00 74 00 67 00 37 00 30 00         z1.\.t.g.7.0.

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

0016D98C  38 00 38 00 42 00 37 00 39 00 35 00 44 00 31 00  8.8.B.7.9.5.D.1.
0016D99C  38 00 31 00 33 00 37 00 45 00 39 00 36 00 31 00  8.1.3.7.E.9.6.1.
0016D9AC  45 00 45 00 33 00 37 00 32 00 37 00 34 00 44 00  E.E.3.7.2.7.4.D.
0016D9BC  34 00 30 00 46 00 33 00 35 00 33 00 30 00 37     4.0.F.3.5.3.0.7

0016D9FC  45 07 18 00 40 00 00 00 38 00 38 00 42 00 37 00  E.@...8.8.B.7.
0016DA0C  39 00 35 00 44 00 31 00 38 00 31 00 33 00 37 00  9.5.D.1.8.1.3.7.
0016DA1C  45 00 39 00 36 00 31 00 45 00 45 00 33 00 37 00  E.9.6.1.E.E.3.7.
0016DA2C  32 00 37 00 34 00 44 00 34 00 30 00 46 00 33 00  2.7.4.D.4.0.F.3.
0016DA3C  35 00 33 00 30 00 37 00 00 00 62 97 5C 00 E5 5D  5.3.0.7...b梊.錧
0016DA4C  0B 7A 31 00 5C 00 74 00 67 00 37 00 30 00         z1.\.t.g.7.0.
这样就相等了吧.

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

总结:

爆破不一定改跳转就行.[s:42]

免费评分

参与人数 1威望 +2 收起 理由
Hmily + 2 感谢发布原创作品,[吾爱破解]因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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
世界需要和谐   
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 16:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表