飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5719|回复: 9

Bbgs.chinayVB程序的破解

[复制链接]
  • TA的每日心情
    开心
    2024-10-8 02:05
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-6-4 10:59:58 | 显示全部楼层 |阅读模式
    Bbgs.chinayVB程序的破解

    VB程序使很多朋友感到头痛,主要是VB程序反编译时产生大量的垃圾代码,而且也找不到有
    用的信息,在动态调试过程中,垃圾代码太多,往往迷失于冗余的代码中,找不到方向。   记住VB常用的一些函数:
    MultiByteToWideChar 将ANSI字符串转换成UNICODE字符
    WideCHatToMultiByte  将UNICODE字符转换成ANSI字符
    rtcT8ValFromBstr    把字符转换成浮点数  
    vbaStrCmp        比较字符串(常用断点)
    vbaStrComp       字符串比较(常用断点)
    vbaStrCopy       复制字符串
    StrConv        转换字符串
    vbaStrMove       移动字符串
    __vbaVarCat 连接字符串
    rtcMidCharVar 在字符串中取字符或者字符串!
    __vbaLenBstr 取字符串的长度
    vbaVarTstNe      变量比较
    vbaVarTstEq      变量比较
    rtcMsgBox       显示对话框
    VarBstrCmp       比较字符串
    VarCyCmp        比较字符串
      
    用OD载入脱壳后的程序,在命令行输入:bpx hmemcpy,然后回车,会弹出程序运行调用的所有的函数,在每个函数上设置好断点!说明:我破VB程序喜欢用这个断点设置方法,通过一步步跟踪,基本可以把握程序保护的思路,所以我破VB程序基本用这个断点,当然你可以用其它的断点,只要能找到关键,任何断点都是用意义的。

    关于VB的程序,注册没有提示的二个办法:
    第一(提示错误):用GetVBRes来替换里面的提示串,一般是以'111111','222222'之类的替换
    因为:VB,用的字来存放提示还有加了点东东,我们用的工具一般是字节分析。换成'22222'之类的就是字节了,用静态分析,就有你该的串了。GetVBRes(网上很多,自己下吧)

    第二(没有提示):用vbde这个工具(不知道,有没有用过DEDE,是一样思路),主要是找出破解的按钮窗口的位置,来进行跟踪。

    先给出修改能正确反编译VB程序的W32DASM的地址:
    ======================
    offsets 0x16B6C-0x16B6D

    修改机器码为: 98 F4
    ======================

    VB程序的跟踪断点:

    ============
    MultiByteToWideChar,
    rtcR8ValFromBstr,
    WideCharToMultiByte,
    __vbaStrCmp
    __vbaStrComp
    __vbaStrCopy
    __vbaStrMove
    __vbaVarTstNe
    rtcBeep
    rtcGetPresentDate (时间API)
    rtcMsgBox
    =========

    时间限制断点:

    ================
    CompareFileTime
    GetLocalTime
    GetSystemTime
    GetTimeZoneInformation
    msvcrt.diffTime()
    msvcrt.Time()
    ================

    VB断点查找方法

    1,VB6.0编写,OD载入程序调出注册窗口,alt+e调出可执行模块窗口找到X:\WINDOWS\system32\MSVBVM60.DLL
    双击,在ctrl+n调出窗口找到,名称XXXXXXE区段=ENGINE 导出__vbaVarMove双击来到下面地址(可以直接在命令行 bp __vbaVarMove)
    回到程序注册窗口点注册被拦断在刚才下断的地址,断后在ctrl+F9,F8回
    2,OD载入程序,命令行下断点。
    bp rtcMsgBox
    堆栈友好提示
    确定注册失败按钮返回。接着向上找出点注册按钮执行的代码第一句,可以吗?当然行,根据我们知道程序员写一个事件执行的代码是如这种,
    各种语言都差不多。
    3,OD载入程序,命令行下断点。
    bp rtcMsgBox
    任意填入伪注册码 9999999999999999999
    确定后中断
    堆栈友好提示
    确定注册失败按钮返回。
    W32Dasm反汇编程序,Shiht+F12
    4,VB中的messagebox是一个消息框,汇编中用rtcMsgBox下断点.用olldbg载入程序,Alt+e,在可执行文件模块中找到Msvbvm60.dll,双击它,
    在代码窗口点右键-搜索-当前模块中的名称中的rtcMsgBox函数,双击它,在6A362F29 55 PUSH EBP这一句双击下断点,关掉多余的窗口,只留下
    cpu调试主窗口,F9运行程序,点?号按钮,随便输入987654321后,回车后立即中断,然后Ctrt+f9执行到返回地址,因为这是msvbvm60的领空,
    我们要回到程序领空.秘密记事本弹出message错误提示信息,点确定,向上看 ,再按F8就回到
    5,为Microsoft Visual Basic 6.0。先用SmartCheck找到程序比较注册码点,
    6,用vb常用比较断点
    vbastrcmp
    vbastrcomp
    vbavartsteq
    在od中设断点找注册码
    7,用Od载入程序,运行,填入上面的注册码和顺序号。在Od中下断点,Alt+E,双击Msvbvm60运行库,右键-搜索当前模块中的名称,找到Vbastrcmp,双击下断点。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-6-4 12:08:35 | 显示全部楼层
    很有理论性,复习啦!

    感谢楼主的转帖!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-6-6 22:03:50 | 显示全部楼层
    这么深奥的东西,先看看再说
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-30 10:56:17 | 显示全部楼层
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2007-1-30 11:36:11 | 显示全部楼层
    学习了,VB的东西有些麻烦的。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-30 14:35:20 | 显示全部楼层
    《QQ斗地主两副牌刷分>

    这个程序有点变态,反调试重启:调用exitwindowsex这个函数

    004086D0    A1 8C4C4100     MOV EAX,DWORD PTR DS:[414C8C]
    004086D5    0BC0            OR EAX,EAX
    004086D7    75 02           JZ SHORT QQ斗地主.004086DB  将这里改为JNZ  
    004086D9    FFE0            JMP NEAR EAX
    004086DB    68 B8864000     PUSH QQ斗地主.004086B8                      ; user32.dll
    004086E0    B8 E0104000     MOV EAX,<JMP.&msvbvm60.DllFunctionCall>
    004086E5    FFD0            CALL NEAR EAX
    004086E7    FFE0            JMP NEAR EAX

    就可以避免重启,方便大家调试哦

    另外大家下BP __vbaStrCat,一直按F9就可以看到程序检测的东西:

    在堆栈中看到

    0012F8E4   0015F71C  UNICODE "regsho"

    0012F8E4   0015F71C  UNICODE "fileMo"

    0012F8E4   0015F71C  UNICODE "SoftIC"

    0012F8E4   0015F71C  UNICODE "Regsna"

    0012F8E4   00163564  UNICODE "Smartche"

    0012F8E4   001635B4  UNICODE "WKTVBDebug"

    0012F9BC   00163604  UNICODE "\kugua748.dat"

    我在网吧,比较不方便搞,以上是我找的一些,希望对大家破解有帮助,,这个VB的确很难,希望高手搞个动画,给我们这些菜鸟学习下啊1
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-2-5 23:16:14 | 显示全部楼层
    我也感到很头疼!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2008-2-8 16:13:07 | 显示全部楼层
    呵呵,严重的学习哦!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-8-7 22:49:41 | 显示全部楼层
    不错,总结的很好,收藏
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-3-28 22:57
  • 签到天数: 31 天

    [LV.5]常住居民I

    发表于 2011-1-3 16:09:50 | 显示全部楼层
    加上实例该多好!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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