标题:新手破解2-->VB篇,其实破解很容易(强烈建议不想挑错的高手来说我白痴……)
作者:NONAME SWORDMAN[CPU]
NONAME SWORDMAN[CPU]
Lake.NONAME's DREAM
呵呵,上次学得如何?(菜:……扁你,根本看不懂……高:你讲的什么LJ,我都看不懂,更别提帮你改了。我:……无语)
笑过,其实我最近上不了网,上网也只能上个1~2分钟的,所以……没有时间看帖子,就猜测一下了:)
希望斑竹能加精,呵呵,是我第一次写到PEDIY上也是第一次写教程……(高:菜鸟写给菜菜鸟的教程?我:别说得那么不雅……打击别人的自尊心……高:是菜鸟还是菜菜鸟的自尊心?我:再问我扁你~)
不加精也罢,反正爱看的就看,不爱看的也别不看,挑挑错:) (高:痛苦ING~还限制我人生自由……)
再猜测一下,估计有人会问[CPU]到底是什么意思……呵呵,不是提示你了吗?(你=空气?看来PEDIY人气好像很低落)意思是中国仙剑联盟的意思,=China Pal(union) Union简称CPU:)其实和破解没什么关系,CPU也是我很喜欢上的BBS,所以就……(高+斑竹:……BS你……)呵呵,既然不是破解组织的,那就写别的组织嘛,反正都是把破解当玩:)(高:你是为了免费使用软件而CREAK的吧?我:你别说了,再说干脆别写了,弄个咱俩的访谈录得了!顿时3/3高选择了右上角的小XX……),所以就冒充一下吧:)
另:谢谢斑竹给我提的建议(PEDIY。COM :) )
OK,咱们来上课,今天的内容是——CM!(全称CREAK ME!是为了专门破解而建立的小程序……)
我们的CM一步一步开始,首先是最简单的,来看一段代码,vb的:)吾等小辈最喜欢的:)Y?看下面……(菜:什么VB?不懂,VERY BIG PIG?我:……不懂就跳,别瞎说……):
If Text1.Text <> "www.pediy.com" Then MsgBox "验证失败!", vbExclamation Else MsgBox "验证成功!"
这段代码在OD中是怎么翻译的呢?
00401D88 . FF15 20104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSet>] ; MSVBVM60.__vbaObjSet
00401D8E . 8BF0 MOV ESI,EAX
00401D90 . 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
00401D93 . 52 PUSH EDX
00401D94 . 56 PUSH ESI
00401D95 . 8B0E MOV ECX,DWORD PTR DS:[ESI]
00401D97 . FF91 A0000000 CALL DWORD PTR DS:[ECX+A0]
00401D9D . 3BC7 CMP EAX,EDI
00401D9F . DBE2 FCLEX
00401DA1 . 7D 12 JGE SHORT 1.00401DB5
00401DA3 . 68 A0000000 PUSH 0A0
00401DA8 . 68 00184000 PUSH 1.00401800
00401DAD . 56 PUSH ESI
00401DAE . 50 PUSH EAX
00401DAF . FF15 18104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckObj>] ; MSVBVM60.__vbaHresultCheckObj
00401DB5 > 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
00401DB8 . 50 PUSH EAX
00401DB9 . 68 14184000 PUSH 1.00401814 ; UNICODE "www.pediy.com"
00401DBE . FF15 3C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCmp>] ; MSVBVM60.__vbaStrCmp--》看到这个了吗:)VB的标准检验字符串子程序:)
00401DC4 . 8BF0 MOV ESI,EAX
00401DC6 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
00401DC9 . F7DE NEG ESI
00401DCB . 1BF6 SBB ESI,ESI
00401DCD . F7DE NEG ESI
00401DCF . F7DE NEG ESI
00401DD1 . FF15 8C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
00401DD7 . 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
00401DDA . FF15 90104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
00401DE0 . B9 04000280 MOV ECX,80020004
00401DE5 . B8 0A000000 MOV EAX,0A
00401DEA . 66:3BF7 CMP SI,DI
00401DED . 894D AC MOV DWORD PTR SS:[EBP-54],ECX
00401DF0 . 8945 A4 MOV DWORD PTR SS:[EBP-5C],EAX
00401DF3 . 894D BC MOV DWORD PTR SS:[EBP-44],ECX
00401DF6 . 8945 B4 MOV DWORD PTR SS:[EBP-4C],EAX
00401DF9 . 894D CC MOV DWORD PTR SS:[EBP-34],ECX
00401DFC . 8945 C4 MOV DWORD PTR SS:[EBP-3C],EAX
00401DFF . 74 44 JE SHORT 1.00401E45
00401E01 . 8D55 94 LEA EDX,DWORD PTR SS:[EBP-6C]
00401E04 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00401E07 C745 9C 44184>MOV DWORD PTR SS:[EBP-64],1.00401834 ; OVER
00401E0E . C745 94 08000>MOV DWORD PTR SS:[EBP-6C],8
00401E15 . FF15 78104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDup>] ; MSVBVM60.__vbaVarDup
00401E1B . 8D4D A4 LEA ECX,DWORD PTR SS:[EBP-5C]
00401E1E . 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C]
00401E21 . 51 PUSH ECX
00401E22 . 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C]
00401E25 . 52 PUSH EDX
00401E26 . 50 PUSH EAX
00401E27 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00401E2A . 6A 30 PUSH 30
00401E2C . 51 PUSH ECX
00401E2D . FF15 24104000 CALL DWORD PTR DS:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox
00401E33 . 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C]
00401E36 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
00401E39 . 52 PUSH EDX
00401E3A . 8D4D C4 LEA ECX,DWORD PTR SS:[EBP-3C]
00401E3D . 50 PUSH EAX
00401E3E . 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
00401E41 . 51 PUSH ECX
00401E42 . 52 PUSH EDX
00401E43 . EB 41 JMP SHORT 1.00401E86
00401E45 > 8D55 94 LEA EDX,DWORD PTR SS:[EBP-6C]
00401E48 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00401E4B . C745 9C 44184>MOV DWORD PTR SS:[EBP-64],1.00401844 ; OKOKOKOK!
长不?呵呵:)没事,咱们一点一点分析:)(菜:……看不懂……什么叫MOV?我:汗~这你还看不懂你重学汇编基础去!)
将断点设在00410DAF上,咱们一点一点的跟,开始的数值没什么,但是到00401DB8 . 50 PUSH EAX的时候,HIHI,看见没?你输入进去的东东……对!全放在EAX里了,再下一句00401DB9 . 68 14184000 PUSH 1.00401814 ; UNICODE "www.pediy.com"你也许会问:1.00401814(是个内存地址,=401844,1是我的程序名)里面是什么东西?如果你看了我上面的VB代码就会知道,他是那个注册码,下一句极为重要:VBASTRCMP,有时是VBSTRCOMP,这些是来比较两个字符串的,很很很很很很很很很很很很很很很重要,CREAK vb的大部分都是在他身上下手(断点,HIHIHI~~程序该倒霉了),对比的具体过程就让他们(MSVBVM60.DLL)去忙吧:)再看00401DFF . 74 44 JE SHORT 1.00401E45,上面的CMP SI,DI是不是很……对!他就是跳转,不跳死,跳则活,HIHI~~算法分析完毕,来看看破解过程,这里有好几个破解方法,一一来写一下
1 直接把www.pediy.com输入进注册框……HIHI,成功!
菜鸟笔记:其实动破也可以,运行一遍程序以后看右下角的小框……
2 把00401DFF JE SHORT 1.00401E45该为JMP SHORT 1.00401E45
菜鸟笔记:JMP:改CS IP,无条件跳转
3 把00401E07 MOV DWORD PTR SS:[EBP-64],1.00401834改成MOV DWORD PTR SS:[EBP-64],1.00401844
菜鸟笔记:(本方法仅对本题有用),34是“失败”的对话框,44是“正确”的,所以…………
4 把00401E4B MOV DWORD PTR SS:[EBP-64],1.00401844改成00401E4B MOV DWORD PTR SS:[EBP-64],1.00401814
菜鸟笔记:(本方法对所有题有用),14是注册码的窗口,随便输一个注册号试试……WWW.PEDIY.COM出来了,好了,剩下的我不用说了吧:)
(caicai:还要干吗?关机吗?我:你……我无语了,你按两次CTRL+ALT+DEL吧!高:你还用WIN98哪?我:XP被CAICAI给气死了……高:没蓝屏吗98?我:没caicai就没有……)
好像本期的太少了:(
(斑竹:你也注意到这点了啊?我:那…那我再发一个吧)
来看看这条语句:
If InStr(1, Text1.Text, "bSb1.pEdiy.com") = 0 Then
MsgBox "验证失败!", vbExclamation
Else
MsgBox "验证成功!"
End If
这样汇编会出什么呢?
00401DB5 > \8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
00401DB8 . 6A 01 PUSH 1 ; 假的进来
00401DBA . 50 PUSH EAX
00401DBB . 68 0C184000 PUSH 2.0040180C ; UNICODE "bSb1.pEdiy.com"--》HIHI~~
00401DC0 . 57 PUSH EDI
00401DC1 . FF15 60104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaInStr>] ; MSVBVM60.__vbaInStr--》INSTR!呵呵,知道为什么VB是我们的最爱了吗?
00401DC7 . 8BF0 MOV ESI,EAX
00401DC9 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
00401DCC . F7DE NEG ESI
00401DCE . 1BF6 SBB ESI,ESI
00401DD0 . 46 INC ESI
00401DD1 . F7DE NEG ESI
00401DD3 . FF15 8C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
00401DD9 . 8D4D E4 LEA ECX,DWORD PTR SS:[EBP-1C]
00401DDC . FF15 90104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
00401DE2 . B9 04000280 MOV ECX,80020004
00401DE7 . B8 0A000000 MOV EAX,0A
00401DEC . 66:3BF7 CMP SI,DI
00401DEF . 894D AC MOV DWORD PTR SS:[EBP-54],ECX
00401DF2 . 8945 A4 MOV DWORD PTR SS:[EBP-5C],EAX
00401DF5 . 894D BC MOV DWORD PTR SS:[EBP-44],ECX
00401DF8 . 8945 B4 MOV DWORD PTR SS:[EBP-4C],EAX
00401DFB . 894D CC MOV DWORD PTR SS:[EBP-34],ECX
00401DFE . 8945 C4 MOV DWORD PTR SS:[EBP-3C],EAX
00401E01 . 74 44 JE SHORT 2.00401E47 ; 不跳去见马克思!
00401E03 . 8D55 94 LEA EDX,DWORD PTR SS:[EBP-6C]
00401E06 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00401E09 . C745 9C 30184>MOV DWORD PTR SS:[EBP-64],2.00401830
00401E10 . C745 94 08000>MOV DWORD PTR SS:[EBP-6C],8
00401E17 . FF15 78104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDup>] ; MSVBVM60.__vbaVarDup
00401E1D . 8D4D A4 LEA ECX,DWORD PTR SS:[EBP-5C]
00401E20 . 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C]
00401E23 . 51 PUSH ECX
00401E24 . 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C]
00401E27 . 52 PUSH EDX
00401E28 . 50 PUSH EAX
00401E29 . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00401E2C . 6A 30 PUSH 30
00401E2E . 51 PUSH ECX
00401E2F . FF15 24104000 CALL DWORD PTR DS:[<&MSVBVM60.#595>] ; MSVBVM60.rtcMsgBox
00401E35 . 8D55 A4 LEA EDX,DWORD PTR SS:[EBP-5C]
00401E38 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
00401E3B . 52 PUSH EDX
00401E3C . 8D4D C4 LEA ECX,DWORD PTR SS:[EBP-3C]
00401E3F . 50 PUSH EAX
00401E40 . 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
00401E43 . 51 PUSH ECX
00401E44 . 52 PUSH EDX
00401E45 . EB 41 JMP SHORT 2.00401E88
00401E47 > 8D55 94 LEA EDX,DWORD PTR SS:[EBP-6C]
00401E4A . 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
00401E4D . C745 9C 40184>MOV DWORD PTR SS:[EBP-64],2.00401840
这段就不要解释了吧,有了INSTR,而且MICRO$OFT还好心地标记……哈哈:)偷着乐吧:)
其实破解一点也不难,有了这次课,以后咱们再来探讨探讨更复杂的程序(之所以写本期的是因为我怀疑上期好多都没听懂……)
PS:这是我改的第二个稿,把一稿发上来,大家别骂我………………
----------------------------------------------------------
作者:NONAME SWORDMAN[CPU]
NONAME SWORDMAN[CPU]
Lake.NONAME's DREAM
呵呵,上次学得如何?(菜:……扁你,根本看不懂……高:你讲的什么LJ,我都看不懂,更别提帮你改了。我:……无语)
笑过,其实我最近上不了网,上网也只能上个1~2分钟的,所以……没有时间看帖子,就猜测一下了:)
希望斑竹能加精,呵呵,是我第一次写到PEDIY上也是第一次写教程……(高:菜鸟写给菜菜鸟的教程?我:别说得那么不雅……打击别人的自尊心……高:是菜鸟还是菜菜鸟的自尊心?我:再问我扁你~)
不加精也罢,反正爱看的就看,不爱看的也别不看,挑挑错:) (高:痛苦ING~还限制我人生自由……)
再猜测一下,估计有人会问[CPU]到底是什么意思……呵呵,不是提示你了吗?(你=空气?看来PEDIY人气好像很低落)意思是中国仙剑联盟的意思,=China Pal(union) Union简称CPU:)其实和破解没什么关系,CPU也是我很喜欢上的BBS,所以就……(高+斑竹:……BS你……)呵呵,既然不是破解组织的,那就写别的组织嘛,反正都是把破解当玩:)(高:你是为了免费使用软件而CREAK的吧?我:你别说了,再说干脆别写了,弄个咱俩的访谈录得了!顿时3/3高选择了右上角的小XX……),所以就冒充一下吧:)
好,不说了,言归正传,今天咱们来讨论讨论破解的理论(上次要好好消化一下,所以……,实际上是我偷懒^_^)
破解一般分这几步
1 下载-§这两步……算了,高手回来又要骂我的……
2 安装-§(但是像一些破解MSI之类的第二步例外)
3 破解程序开始了!
这里又分两种
1 动破
2 静破
我一般采用动静结合:)就是动只用调试器,再来分析静,呵呵:)
至于动静破可以回去去翻翻书去,我网络自学+自己研究,没米,只好就不买了:)
咱再来分分破解的其他方法
1 反编译 注意动静破都是“反汇编”,这是反编译,就是把原EXE程序的代码全给翻译成高级语言(这样比反汇编要好N倍),一般编出反 编译软件的都是大牛
2 脱壳 其实这应该放到步骤里去,但是有好多软件过分依赖脱壳(CFAN某期上刊登的“不用考虑加密算法”的那个自动加密软件,实际上就是+了一层壳,害苦了无数共享软件……菜菜:听起来像在幸灾乐祸……我:……),导致很多被攻破壳就OK了……,所以放到这里
3 机器语言破解 这位绝对是天才!我只能这么说了,能在40分内用机器语言破解StarF***e最新版(就是得去网络验证的)那位可以去申请迪斯尼记录了(无意见进来的一位过客:那是什么记录?……)
4 金山游侠 对于能用这种软件破解的共享软件我实在是佩服……
5 灰色按钮 你不知道用几个API就可以破解一个软件吗?去网上找找吧……许多安装包和一些其他的保护程序都死在他的脚下,使算法英雄无用武之地……
6 变速齿轮 配合5,一些想用TIMER控件的软件作者该倒霉了…………
7 自动化破解 一般都是私人武器,决不外传……编个软件来分析,更有牛人能到NEWHUA网上狂DOWN共享软件,然后各个安装,看看破解难度是不是最简单的,是则程序自己破,难度一般保留,很难(像吾等菜鸟看RSA……)的卸载掉……反正我看过这种软件,只不过我说给他多少米(本来是想买书de……而且是很多本关于——汇编和PASCAL还有算法的 BECAUSE 我是NOIP选手……)他都不给我……大牛啊
基本上就这些了,像7这样的吾等菜鸟就别考虑了,456都是玩赖的,不过最少还能CREAK,一般就1、2和常规了,你说3?做梦去吧……地球上还找不出来那种人,不过会机器语言的肯定还是有1/N的人地!
在破解路上,最重要的就是坚持,还有冷静的思考。一些喜欢折磨人的软件作者还会在程序中来捉弄你,想这种的……你还是仔细的想吧,发现不对头要大胆质疑自己以前的想法,还有就是一定要静态分析 软件作者有没有在玩你……因为动态经常容易被捕捉到......
好了,同志们,今天就先到这里了,太累了,以后再讲吧,我也要修炼去了,收工!
最后,一定要小心软件作者阴吾等菜鸟的招——放假注册码,故意把注册码放在最明显的位置……
GIRL,GIRL,GIRL!(啊?打错了,应该是GOGOGO……)
有没有人问我上次教程里的HIHIHI~~~是什么意思?答:去见马克思。去见马克思什么意思?答:你去见马克思吧:)
OK,祝大家CREAK愉快,搞网络的顺便看看能不能教我一下HACKER:) (话外音:高手都气跑了,只剩下菜菜鸟了。我:菜菜鸟说不定也有高手……)
呵呵,同志们,下次再见,88
NONAME SWORDMAN[CPU]
Lake.NONAME's DREAM
mail:wangjunyi2008@sina.com
PEDIY论坛ID: NONAME剑人
浩方cs:"love usp"or[:=Cabbage=:]Bird No.1
浩方碧雪:仙剑
新浪碧雪:中国仙剑/中国仙剑联盟/
----------------------------------------------
如果您需要转载,请您保留作者信息,并注明该文章转自PEDIY.COM
--------------------------------------------------------------------------------------------------
汗吗?呵呵:)就当2次课了:)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)