当前位置:早雪网网络学院破解相关破解手记 → 谈谈VB程序的破解(续)

谈谈VB程序的破解(续)

减小字体 增大字体 作者:未知  来源:超级下载收集整理  发布时间:2005-6-3 0:56:07

 

    上次写了VB程序的破解一文,这次因为发现那个方法不是通用的,所以特别写一篇续.其实我这2篇文章并不是专门用于破解在启动时检测的程序的,我只是想说一个方法,利用VB中的事件,于是轻松找到程序的关键,各位要是有兴趣可以跟一下,很简单.废话少说,运行VB6,新建一个工程,然后添加一个模块,双击模块,删除Form,再输入:
Sub Main
MsgBox ("test!")
End
End Sub
然后编译成本机代码,在这种情况下,我以前说的办法就没有用了,大家还是跟我来吧.

还是TRW载入,然后慢慢跟就到了这里.
......
0187:6600DE5B FF1518110066    CALL    `KERNEL32!GetStartupInfoA`
0187:6600DE61 0FB745D0        MOVZX    EAX,WORD [EBP-30]
0187:6600DE65 A3D8F71066      MOV      [6610F7D8],EAX
0187:6600DE6A FF35CCF61066    PUSH    DWORD [6610F6CC]
0187:6600DE70 56              PUSH    ESI
0187:6600DE71 BE70F41066      MOV      ESI,6610F470
0187:6600DE76 8BCE            MOV      ECX,ESI
0187:6600DE78 E860000000      CALL    6600DEDD        //进去
......
(省略过程)
......
0187:******** FF9694000000    CALL    NEAR [ESI+94]        //这里F8进去就返回程序领空了,我们又成功的停在了VB代码开始的地方.
0187:******** 8D45D4          LEA      EAX,[EBP-2C]
0187:******** 50              PUSH    EAX
0187:******** E807030000      CALL    66014710
0187:******** 6A01            PUSH    BYTE +01
0187:******** 58              POP      EAX
0187:******** 5F              POP      EDI
0187:******** 5E              POP      ESI
0187:******** C9              LEAVE 
0187:******** C20400          RET      04
......
0187:00401628 6A00            PUSH    BYTE +00
0187:0040162A 50              PUSH    EAX
0187:0040162B FF151C104000    CALL    `MSVBVM60!rtcMsgBox`    //这里就是MsgBox了
0187:00401631 8D4DB0          LEA      ECX,[EBP-50]
0187:00401634 8D55C0          LEA      EDX,[EBP-40]
0187:00401637 51              PUSH    ECX
0187:00401638 8D45D0          LEA      EAX,[EBP-30]
0187:0040163B 52              PUSH    EDX
0187:0040163C 8D4DE0          LEA      ECX,[EBP-20]
0187:0040163F 50              PUSH    EAX
0187:00401640 51              PUSH    ECX
0187:00401641 6A04            PUSH    BYTE +04
0187:00401643 FF1508104000    CALL    `MSVBVM60!__vbaFreeVarList`
0187:00401649 83C414          ADD      ESP,BYTE +14
0187:0040164C FF150C104000    CALL    `MSVBVM60!__vbaEnd`    //然后程序End
0187:00401652 6876164000      PUSH    DWORD 00401676
0187:00401657 EB1C            JMP      SHORT 00401675


后记:
    还有一种情况,是某个Crackme,是用VB6编写的,我用了2种办法都不能断下来(其实是作者不按常理出牌).自己新建一个工程,然后编译为本机代码,试试看,还能不能用上面的办法断下来?也就是说,在程序启动时(或检验注册码前)没有任何的事件,真的是很搞笑的一件事,这样的程序,跟踪只会在Msvbvm60.dll中,然后用ShowWindow显示窗口,也就是说程序根本不是在启动时进行检测的(或者说检测时没有产生任何事件?可能吗?).
    我以为按我的方法,只要在VB程序中使用了事件或模块,无论是程序刚启动或已运行,只要用TRW在这2处下了断点,都能轻易的找到程序的关键处.如果各位有什么意见和看法,还请指正

[数据载入中...] [返回上一页] [打 印]