申请会员ID:swju 原创技术文章: vb程序的反汇编
反汇编一个简单的vb程序,首先运行
程序主界面如图所示。 首先用VB Decompiler Pro 打开crackme.exe 文件,完成静态反汇编。可以获得如下有用信息:
Type=Exe
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\WINDOWS\SYSTEM32\STDOLE2.TLB#OLE Automation
Form=Form1.frm
Startup="Form1"
IconForm="Form1"
VersionCompanyName="#learn2crack"
MajorVer=1
MinorVer=00
RevisionVer=0
Command32 = ""
HelpContextID = "0"
CompatibleMode = "0"
AutoIncrementVer = 0
ServerSupportFiles = 0
CompilationType = 0
OptimizationType = 0
FavorPentiumPro(tm) = 0
CodeViewDebugInfo = 0
NoAliasing = 0
BoundsCheck = 0
OverflowCheck = -1
FlPointCheck = 0
FDIVCheck = 0
UnroundedFP = 0
StartMode = 0
Unattended = 0
Retained = 0
ThreadPerObject = 0
MaxNumberOfThreads = 1
[MS Transaction Server]
AutoRefresh = 1
[VB Decompiler]
Build = 9.8.5389.64863
Date = 2016/3/21
最重要是获得三个按钮的反汇编的伪代码,以check 按钮为例:
从反汇编出的代码很容易就知道loc_004033DD 处的代码是输入文本框信息正确时的提示信息。 真正核对信息真伪的地址为: loc_00403329,其2 个参数地址在其上方。要获得正确的序列号,只要知道这两个参数的值就可以了。 接下来进行爆破,使用 OllyDbg 打开,在地址00403329 处设置断点
loc_00403327: push edx loc_00403328: push eax loc_00403329: call [00401058h] ; @ (%StkVar2 = %Stk-Var1) '__vbaVarTstEq loc_0040332F: test ax, ax loc_00403332: jz 00403408h 由以上代码可知,如果核对信息不正确,就会执行 地址:loc_00403332,即修改此处代码为NOP,就可以破
解。在Ollydbg 中,goto 00403332,修改为NOP 。 采用同样的方法,可以 破解该软件的加密方法,关键代码地址为:loc_0040318B~ loc_0040329A。
|