黑客防线,在攻与防的对立统一中寻求突破!2001年创刊的黑客技术专业刊物!

设为首页
收藏本站
联系我们
网站导航

黑客文章 - 加密解密 - 浏览 - 谈谈VB程序的破解(续)(2千字)

谈谈VB程序的破解(续)(2千字)

黑客 发布日期:2008-1-20 2:18:17 共有 279 人次浏览
谈谈VB程序的破解(续)(2千字)
上次写了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处下了断点,都能轻易的找到程序的关键处.如果各位有什么意见和看法,还请指正
所属分类: 加密解密     网摘收藏: Google 雅虎 百度 POCO 365key 和讯 天极