挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运IOS签名/udid证书出售/送证书加群1040456405 ██【我要租此广告位】██
... .
查看: 2203|回复: 0
打印 上一主题 下一主题

[Debuggers] vb写的一个程序克星

[复制链接]
4中级会员
338/600

338

积分

112

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
226
海币
2953
交易币
0
跳转到指定楼层
楼主
发表于 2016-4-2 15:41:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


VB程序的调试还是比较麻烦的。如果你会用SmartCheck的话就简单得多请看下SmartCheck介绍

SmartCheck 是 NuMega 公司推出的一款出色的调试解释执行程序的工具,目前最新版是 v6.03 。它非常容易使用,你不需了解汇编程序。我们以前经常用 SOFTICE 和 W32Dasm 调试程序,幸好 SmartCheck 出现大大地方便了我们。下面我就介绍SmartCheck的基本用法。


配置 SmartCheck

首先运行SmartCheck,装载一VB程序。在菜单选择:Program→Settings;出现图一:(如你在SmartCheck下没有打开应用程序,只出现三个菜单选项:Error Detection;Rrporting;Program Info.)

Error Detection(图一):选上所有的选项。 "Report error immediately",可根据情况调整,选上后程序执行有错误时会立即出现报告,此时在弹出的报告栏上按acknowledge即可,你嫌麻烦可不选此项.如此项没选,则不立即报告.建议不要选。


图一

点击在上图中Advanced后出现图二:


图二

Advanced(图二):选上前面的四项.确信"Suppress system API and OLE calls"没被选上.
            
Reporting(图三):除了"Report MouseMove events from OCX controls"外其余全选上.


图三




--------------------------------------------------------------------------------

用SmartCheck如何运行所要crack程序

1) 首先运行;
2) 在"File", "Open",选择你需运行的程序;
3) 按F5或选择 "Program", "Start"运行程序;
4) 停止程序,选择"Program", "End";
你最好是了解SmartCheck的工具栏的用法,大大方便操作。



--------------------------------------------------------------------------------

程序在SmartCheck下运行结束后你应看到时如下东西

1) 在SmartCheck里你应有3个小窗口。我自己的有时会出现一个主窗口,怎么回事呢?原来其它两个(右边和下边)完全最小,缩到边上(右边、下边)去了,你可用鼠标把它们拖出来。
2) 主窗口被称为"Program Results window"。 这窗口在左上。
3) 右边的窗口主要是显示主窗口的一些详细内容,很多重要详细东西都在此,你有可能看到的序列号就在这里。

在你停止程序后,你应该分析SmartCheck给出的信息,你必需选上相关的行,并选择"View", "Show All Events"。你需要VB介绍这课相关知识了解各比较方法和断点函数。



--------------------------------------------------------------------------------

SmartCheck 常见信息

我用粗体表示在SmartCheck中显示的内容。



--------------------------------------------------------------------------------

****.Text 如. Text1.Text
如果你点击前面的“+”符号,你将看到其它的几行,寻找SysAllocStringLen。
如. SysAllocStringLen(PTR:00000000, DWORD:00000029) returns LPVOID:410584

解释:
从文本框取出你键入字符并放置在内存00410584处。这意味着你可不用SOFTICE下的"s 30 l" 查找字符串命令。我们来验证一下:确信你的SOFTICE己运行,然后在SmartCheck下再次运行程序。当你在SmartCheck下的程序正在运行时,在适当机会用SOFTICE中断(CTRL+D),下命令"d 00410584"。如果你做的正确的话,你将在内存里看到你键入的字符。 如果你的程序没在SmartCheck下运行,你可能在此地址看不到,因为内存可能改变了。或内存“释放”。




--------------------------------------------------------------------------------

__vbasrtcmp(String:"zzzzz",String:"yyyyy")returns DWORD:0

解释:
__vbastrcmp -- 用来比较字符串 如. "zzzzz" and "yyyyy"
注意:你可能会看到正确序列号和你输入字符串比较。
returns DWORD:0 -- 在SOFTICE里,你将看到比较后, eax = 0



--------------------------------------------------------------------------------

__vbafreestr(LPBSTR:0063F3F0)
点击上面 "+" 寻找SysFreeString
如. SysFreeString(BSTR:00410584)

解释:
字符串在内存00410584 被清除。



--------------------------------------------------------------------------------

__vbaVarCopy(VARIANT:String:"12345", VARIANT:Empty) returns DWORD:63FA30
点击前面的 "+" 号寻找SysAllocStringByteLen
如. SysAllocStringByteLen(LPSTR:004023F0, DWORD:0000000C) returns LPVOID:4103CC

解释:
"12345"被复制到内存 004103CC
这类似 __vbaVarMove



--------------------------------------------------------------------------------

__vbaVarForInit(VARIANT:Empty, PTR:0063F920, PTR:0063F91.....)

解释:
移动到上面,为了下一个循环
通常在它下面 __vbaVarForNext 用法与其一样.



--------------------------------------------------------------------------------

Mid(VARIANT:String:"abcdefg", long:1, VARIANT:Integet:1)

解释:
从位置1得到字符串"abcdefg"第一个字符。
点击上面的 "+"号寻找 SysAllocStringByteLen
如. SysAllocStringByteLen(LPSTR:004103F0, DWORD:00000002) returns LPVOID:410434

解释:
"a"将被复制到内存00410434
它后面通常跟随 __vbaStrVarVal(VARIATN:String"a") returns DWORD:410434



--------------------------------------------------------------------------------

Asc(String:"T") returns Integer:84

解释:
得到“T”的ASCII码十进制 84



--------------------------------------------------------------------------------

SysFreeString(BSTR:004103F0)

解释:
释放内存位置:004103F0
这些对我们特别有用,因为当你点击它们,看右边窗口,你将看到被释放的字符串。此时正确的序列号和密码有可能在此。



--------------------------------------------------------------------------------

__vbaVarCat(VARIANT:String:"aa", VARIANT:String:"bb") returns DWORD:63F974

解释:
连接 "bb" 和"aa"形成"aabb"



--------------------------------------------------------------------------------

__vbaFreeVar(VARIANT:String:"abcdefg")
点击 "+"寻找SysFreeString
例. SysFreeString(BSTR:0041035C)

解释:
从内存 0041035C释放 "abcdefg"
这儿,点击这行在右边有可能发现你所要的东西。



--------------------------------------------------------------------------------

__vbaVarTstEq(VARIANT:****, VARIANT:****) returns DWORD:0

解释:
__vbaVarTstEq 通常用来比较变量.如果它们不一样 , DWORD=0 (so eax=0)
如果它们一样, DWORD将为FFFFFFFF (so eax=FFFFFFFF)
类似__vbaVarCmpEq



--------------------------------------------------------------------------------

Len(String:"Cracker") returns LONG:7

解释:
得到字符串 "Cracker" 的长度为7



--------------------------------------------------------------------------------

****.Text <-- "Wrong! Try Again!!" (String)

解释:
在文本框中显示g "Wrong! Try Again!!"



--------------------------------------------------------------------------------

__vbaVarAdd(VARIANT:Integer:2, VARIANT:Integer:97) returns .....

解释:
2+97=97,返回99
But if both are Strings instead of Integers, you will get 297 instead.



--------------------------------------------------------------------------------

__vbaVarDiv(VARIANT:Integer:97, VARIANT:Long:1) returns.....

解释:
97除以1



--------------------------------------------------------------------------------

__vbaVarMul(VARIANT:String:"1", VARIANT:String:"2") returns ...

Explanation:
1乘2



--------------------------------------------------------------------------------

__vbaVarSub(VARIANT:String:"2", VARIANT:String:"34") returns ...

解释:
"34"-"2", 返回 32



--------------------------------------------------------------------------------

MsgBox(VARIANT:String:"Nope! That's not right", Integer:0, VARIANT:String:"Wrong",VARIANT.....)

解释:
创建一个消息框,标题是 "Wrong" 内容为 "Nope! That's not right"

给大家一个简单例子的crackme

以下是crackme的破解过程

该程序是VB5程序,下面用两种方法简述一下。
1 、用 SmartCheck 破解
用 SmartCheck 装载该程序,输入任意序列号如 9876543210 ,点击 register ,它会告诉你错误。此时不要点 OK, 在 SmartCheck 下按停止按钮(红色的那个), CrackMe 停止退出。
展开 Reg_Click 来到 + MsgBox 这行,用 "Show All Events" 命令。你会看到:
+ _vbaFreeObjList
+ SysFreeString  <-- 你输入的序列号
+ SysFreeString  <-- 正确的序列号,看右边: "rkh1oyie"
..... 省略一部分 .........
+ SysFreeString
_vbaVarTstEq returns DWORD:0
+ _vbaVarDup returns DWORD: 63F3AC
+ _vbaVarDup returns DWORD: 63F3BC
+ MsgBox   <-- 展开后你停在此,向上看,需用滚动条向上翻。
2 、用 SOFTICE 破解
Step1 运行 CrackMe 并输入任意序列号;
Step2 在 SOFTICE 下设断: bpx__vbastrcomp, 按 register ,将被 SOFTICE 拦截;
Step3 按 F10 向下 ......
:0F003577   MOV  ESI , [EAX - 04]
EAX = 假的序列号 !
Step4 一直向下 .......
:0F003588   MOV  EDI , [ECX-04]
d ecx-04 => .r.k.h.1.o.y.i.e. (wide char
注:注册成功后,你还想练习,请在CrackMe菜单FILE选择restart
SmartCheck 下载地址

chap7-01.zip (7.49 KB, 下载次数: 4)


联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:Zeta Debugger v1.4
下一篇:全部调试工具 板砖.....
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-4-5 10:15 , Processed in 0.133193 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

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