用OD破解VB程序的捷径
- 格式:ppt
- 大小:1.76 MB
- 文档页数:13
新手入门学习——脱壳破解练习第一期新手入门学习——脱壳破解练习第一期拿到一个软件,先看看是加的什么壳。
用PEiD查得【Upack V0.37-V0.39 -> Dwing *】接着拿出破解第一要物OD进行脱壳(注意选好点的版本,由于Upack壳做了变形,有些版本的OD打开时会出错,最好是用英文版的)OD载入……我使用简单一点的ESP定律。
00401018 > BE B0114000 MOV ESI,脱壳破解.004011B00040101D AD LODS DWORD PTR DS:[ESI]0040101E 50 PUSH EAX0040101F FF76 34 PUSH DWORD PTR DS:[ESI+34]00401022 EB 7C JMP SHORT 脱壳破解.004010A0F8前进到【0040101F】,在寄存器窗口ESP处点右键,在数据窗口跟随【0012FFC0】如下图://数据窗口点右键,下硬件断点。
shift+F9运行0012FFC0 004011B8 脱壳破解.004011B80012FFC4 7C82F23B 返回到 kernel32.7C82F23B0012FFC8 00000000//来到OEP,通过观察可以发现,这是一个典型的VB入口。
这里记得要删除硬件断点!004011B8 68 24184000 PUSH 脱壳破解.00401824 //OEP004011BD E8 EEFFFFFF CALL 脱壳破解.004011B0004011C2 0000 ADD BYTE PTR DS:[EAX],AL004011C4 0000 ADD BYTE PTR DS:[EAX],AL 004011C6 0000 ADD BYTE PTR DS:[EAX],AL 004011C8 3000 XOR BYTE PTR DS:[EAX],AL记录新入口地址【11B8】接着打开LoadPE进行脱壳然后使用Import Fix 1.6 进行修复修复完成后即得到脱壳后的文件,用PeiD查询,果然是VB。
[分享] OD破解常用方法[复制链接]一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。
当然加密壳的保护能力要强得多!二、常见脱壳方法预备知识1.PUSHAD (压栈)代表程序的入口点,2.POPAD (出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。
方法一:单步跟踪法1.用OD载入,点“不分析代码!”2.单步向下跟踪F8,实现向下的跳。
也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入7.一般有很大的跳转(大跨段),比如jmp XXXXXX 或者JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。
Btw:在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,继续F8单步跟踪。
一般情况下可以轻松到达OEP!方法二:ESP定律法ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)。
(这只是一般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值)2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX),按回车!3.选中下断的地址,断点--->硬件访--->WORD断点。
几种用OD脱壳方法OD是反编译软件的一种,可以将可执行文件转换为可读的源代码。
脱壳是指从已经加密或保护的软件中提取出原始的未加密或未保护的代码。
下面是几种常见的OD脱壳方法:1.静态分析法:静态分析是指对二进制文件进行分析,了解其结构、函数调用和控制流程等信息。
通过对逆向工程的分析,可以分析出加密算法和解密函数的位置。
使用静态分析法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。
- 使用各种OD工具,如IDA Pro,OllyDbg等,显示可执行文件的汇编代码。
-通过分析代码和调试程序,找到加密算法和解密函数的位置。
-根据找到的位置,修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。
2.动态调试法:动态调试是指在运行时对程序进行调试和分析。
使用动态调试法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。
- 使用动态调试工具,如OllyDbg或GDB等,在程序执行期间跟踪和记录函数调用和内存访问。
-通过分析函数调用和内存访问,找到加密算法和解密函数的位置。
-在找到的位置上下断点,执行程序并使用OD工具查看解密后的代码。
3.内存镜像法:内存镜像法是指通过将程序加载到内存中,并对内存进行镜像和分析来脱壳。
使用内存镜像法脱壳的主要步骤如下:-运行加密的可执行文件。
- 使用内存镜像工具,如DumpBin或WinDBG等,将程序的内存镜像保存到磁盘上。
-使用OD软件加载内存镜像文件。
-通过分析内存镜像文件,找到加密算法和解密函数的位置。
-修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。
这些方法都可以用于将加密的可执行文件转换为可读的源代码,从而进行进一步的分析和修改。
脱壳过程需要进行深入的逆向工程和对程序的理解,因此需要具备一定的技术和知识。
此外,需要注意的是,脱壳过程可能涉及到破解和侵犯版权的行为,应遵守法律规定,并仅限于安全研究和个人学习的目的使用。
vb语言破解方法VB语言是一种基于基本的编程语言,被广泛应用于Windows平台的软件开发。
然而,由于VB语言的特性和易学性,一些人可能会滥用它来进行非法的活动,例如破解软件。
在本文中,我们将介绍一些常见的VB语言破解方法,并提供一些拓展内容来帮助读者更好地了解这个领域。
1. 反编译:反编译是一种常见的VB语言破解方法。
通过使用反编译工具,人们可以将已编译的VB代码还原为可读的源代码,从而获取软件的源代码。
这可以让黑客分析和修改软件,破解其功能限制或添加恶意代码。
2. 调试:调试是另一种常见的VB语言破解方法。
通过使用调试器工具,黑客可以在运行时检查和修改软件的内存和变量。
这使他们能够绕过软件的授权检查或其他安全机制,从而使用软件的功能。
3. 注册机:注册机是一种常见的VB语言破解工具。
黑客可以使用注册机生成合法的序列号或注册密钥,从而绕过软件的授权检查。
这样,他们就可以免费使用软件的全部功能,而不需要购买正版软件。
4. 拦截函数:黑客可以通过拦截函数来破解VB语言编写的软件。
他们可以修改或替换软件的关键函数,以实现他们想要的功能。
这种方法需要对VB语言的内部原理有一定的了解,并且可能需要对软件进行二进制分析。
拓展内容:除了上述提到的常见破解方法,还有其他一些可能的VB语言破解技术。
例如,黑客可以使用虚拟机或调试器来监视和修改软件的执行过程。
他们还可以使用代码注入或代码替换技术来修改软件的逻辑,实现他们自己的目的。
然而,虽然这些破解方法在某些情况下可能是有效的,但它们都是非法行为,并且违反了软件的许可协议和版权法。
因此,我们强烈建议用户不要参与任何形式的软件破解活动,以遵守法律和道德规范。
对于软件开发者而言,他们应该采取一些措施来保护他们的软件免受破解。
例如,他们可以使用加密算法来保护源代码,实施软件授权机制,定期更新软件以修复漏洞等。
此外,他们还应该密切关注软件社区中的安全问题,并及时采取措施应对任何可能的破解行为。
第二十七章-Visual Basic程序的破解-Part2Visual Basic程序破解续本章我们继续讨论VB应用程序破解的话题,上一章我们解决的是一个带NAG窗口的CrackMe。
我们是用那个patch过的OD来弄的,本章我们也会用到,但是本章我们还会介绍另一种更加简便,更加省时的方法。
首先我们还是用那个patch过的OD来分析,弄清楚了具体原理以后,我们再来介绍那种简便的方法。
本章我们实验的对象名称叫做killme,这个程序启动的时候会弹出一个烦人的NAG窗口,我们需要想办法把它剔除掉。
我们直接运行起来的话,可以看到弹出一个NAG窗口。
我们可以看到Continue按钮是灰色的(不可用),当定时器由5减少到0后,Continue按钮就被激活了,我们单击Continue按钮。
NAG关闭了,并且弹出主程序窗口,我们用OD加载该程序。
我们按F9键运行起来。
定时器时间到了后,Continue按钮就被激活了。
我们可以想象一下,NAG窗口关闭后,代码中应该会有一个无条件跳转到主窗口代码执行,所以我们给代码段设置内存访问断点(该内存访问断点实际上只是内存执行断点),接着单击Continue按钮。
单击Continue按钮后,我们断在了这里。
我们可以看到404B60处JMP指令会跳转到40D090地址处开始执行,也就是说主窗口程序实际上是从40D090处开始执行的,这里说主窗口程序可能不太准确,因为我们可以看到这里有好几处JMP分支会跳转到程序的不同部分执行。
我们给这几处JMP指令分别设置断点,然后来看看每个分支跳转分别在什么情况下被触发。
我们重新启动该程序。
刚刚我们看到了单击NAG窗口上的Continue按钮后,会执行JMP 40D090这个分支。
现在我们重新启动程序后,断在了JMP 40D250这个分支处。
NAG窗口还没有显示。
我们继续运行起来。
我们可以看到断在了JMP 40D4F0这个分支处。
这个时候NVG窗口已经显示出来了,上面显示了数字5。
一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。
当然加密壳的保护能力要强得多!二、常见脱壳方法预备知识1.PUSHAD (压栈)代表程序的入口点,2.POPAD (出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。
方法一:单步跟踪法1.用OD载入,点“不分析代码!”2.单步向下跟踪F8,实现向下的跳。
也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入7.一般有很大的跳转(大跨段),比如jmp XXXXXX 或者JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。
Btw:在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键-->“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,继续F8单步跟踪。
一般情况下可以轻松到达OEP!方法二:ESP定律法ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)。
(这只是一般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值)2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX),按回车!3.选中下断的地址,断点--->硬件访--->WORD断点。
教你如何破解软件,OD破解软件,OD使用教程教你如何破解软件,OD破解软件,OD使用教程大家好,这几天我上网大概看了一下,ITyouth论坛的内容真的应有尽有,不知道应该写什么了,所以我想了一晚上终于想到了还是教你们些破解知识吧!我想对大家来说都很有用吧!我将会一直坚持下去保证课堂质量,有不会的可以提出来问我,尽量解答(呵呵!我也是鸟嘛!)废话不多说!支持我的就往下看吧!先教大家一些基础知识,学习破解其实是要和程序打交道的,汇编是破解程序的必备知识,但有可能部分朋友都没有学习过汇编语言,所以我就在这里叫大家一些简单实用的破解语句吧!----------------------------------------------------------------------------------------------------------------语句:cmp a,b//cmp是比较的意思!在这里假如a=1,b=2 那么就是a与b比较大小.mov a,b//mov是赋值语句,把b的值赋给a.je/jz//就是相等就到指定位置(也叫跳转).jne/jnz//不相等就到指定位置.jmp//无条件跳转.jl/jb//若小于就跳.ja/jg//若大于就跳.jge//若大于等于就跳.----------------------------------------------------------------------------------------------------------------------这些都是我们在以后的课程中会经常遇到的语句,应该记住它们,接下来我们在讲讲破解工具的使用:我们破解或给软件脱壳最常用的软件就是OD全名叫ODbyDYK界面如图1它是一个功能很强大的工具,左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值.右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色突出显示.cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态.左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息.右下角的是当前堆栈情况,还有注释啊.恩,今天的课程就上到这了,大家可以在自己的电脑下试试OD,了解了解OD,下堂课我将破解一款软件给大家看,我们就用今天讲的语句和OD来破解,在以后的课程里我还会教大家脱壳,因为现在的软件为了维护版权多数都加了壳的,所以要破解就必须脱壳!好了!下节课见!88OD下载地址:百度一下吧破解工具------ODbyDYK v1.10 12.06.rar 5.1MB【原创】"白拿"软件破解班(二)呵呵!大家好!我是散人,我们又见面了!恩,按照上节课说的那样今天来破解个软件给大家看看!大家只要认真看我的操作一定会!假如还是不明白的话提出难点帮你解决,还不行的话加我QQ!有时间给你补节课!呵呵!好!孔子曰:“废话不可多说也”OK!!!~!!!先讲下预备知识:JZ/JE//相等则跳转JNE/JNZ//不相等则跳转JMP //无条件跳转目标柏林:LRC傻瓜编辑器杀杀杀~~~~~~~~~简介:本软件可以让你听完一首MP3歌曲,便可编辑完成一首LRC歌词。
OD 常用下断API(2009-10-10 11:33:17)标签:od api 断点 it 分类:破解之道1.GetModuleHandleA获取一个应用程序或动态链接库的模块句柄常用于找Magic Jump,破解加密的IAT2.GetCurrentThreadId获取当前线程一个唯一的线程标识符常用于寻找OEP3. CreateFile这是一个全功能的例程,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台常用于程序自校验4.SetWindowText设置窗口的标题文字或控件的内容(在vb里使用:针对vb窗体,应使用caption或text属性)5.VirtualAlloc VirtualFree内存的分配与释放6.bp OpenMutexA双进程转单进程7.LoadLibraryA (用于找Magic Jump)8.he OutputDebugStringA断下后,选中%s%之类的字符,点右键->二进制->使用00填充 常用于 避开Anti ,OD的字符串泄漏漏洞字符串bp GetDlgItemTextA(W) ****bp GetDlgItemIntbp GetWindowTextA(W) ****bp GetWindowWordbmsg XXXX wm_gettext对话框bp MessageBeepbp MessageBoxA(W) ****bp MessageBoxExA(W)bp DialogBoxParamA(W)bp GreateWindowExA(W)bp ShowWindowbp UpdateWindowbmsg XXXX wm_command对于VB的程序用bp MessageBoxA是无法断下来的,bp rtcMsgBox注册表相关bp RegCreateKeyA(W)bp RegDeleteKeyA(W)bp RegQueryValueA(W)bp RegCloseKeybp RegOpenKeyA(W) ****bp RegOpenKeyExA **** 一种不行用另一种时间相关bp GetLocalTimebp GetFileTimebp GetSystemtimeCD-ROM或磁盘相关bp GetFileAttributesA(W) bp GetFileSizebp GetDriveTypebp GetLastErrorbp ReadFilebpio -h (CD-ROM端口地址) R软件狗bpio -h 278Rbpio -h 378RINI初始化文件相关bp GetPrivateProfileStringA **** bp GetPrivateProfileIntbp WritePrivateProfileStringbp WritePrivateProfileInt文件访问相关bp ReadFilebp WriteFilebp CreateFileA ****bp SetFilePointerbp GetSystemDirectory参考自:标 题: 笑解 API 函数 -- API 绝密档案系列之一作 者: gzgzlxg时 间: 2006-03-01 07:14链 接: /showthread.php?threadid=21959详细信息:1. HMODULE GetModuleHandle(LPCTSTR lpModuleName // address of module name to return handle// for);GetModuleHandle 实际上分为两个函数GetModuleHandleA--处理 Ansi 字符串GetModuleHandleW--处理 Unicode 字符串其实真正干活的函数是,GetModuleHandleW (指NT以后的系统),GetModuleHandleA 只不过将用户输入的 Ansi 字符串转成 Unicode 字符串然后就直接调用 GetModuleHandleW,所以在 OD 中如果下断拦截这个函数,直接拦截 GetModuleHandleW 就可以了,保险一个都跑不掉。
一、VB程序?其实,VB的按纽事件的找法是最为普遍的,也就是大家所谓的万能断点.其实也不仅仅是针对按纽事件,还有很多其他的用处,如取消NAG,启动框,灰色按纽或隐藏按纽,启动时的timer事件等等,具体的就自己去总结吧,这里只演示按纽事件!OD载入后,CTRL+B,816C24?确定后,就会来到下图处:然后,就在下面的JMP处F2下断,下完后CTRL+L,如果还有,就继续下断点.下完断点后,运行程序,点击相应的按纽,OD就会断下来了?下面的任务就是考验大家的耐心,F8跟踪吧,不再赘述了.当然,为了方便大家,可以写个简单的脚本,免的每次都去手动设置了,节省时间: 复制内容到剪贴板代码:var Addr?mov Addr,401000?loop:?find Addr,#816C2404??000000#?cmp $RESULT,0?je Exit?add $RESULT,08?bp $RESULT?add $RESULT,1?mov Addr,$RESULT?jmp loop?Exit:?eval "按纽事件查找完毕!"?msg $RESULT?ret?二、Delphi和BC++程序Delphi和BC++都是同一公司开发的,故查找方法都一样,当然你也可以使用DEDE. OD载入后,CTRL+G,转到00401000处?然后就CTRL+B,查找特征码740E8BD38B83????????FF93?????????然后就会找到下面的地方:?然后就在下面的CALL处下断吧.下面的工作就是不断的CTRL+L继续查找和F2下断了.运行下看看效果吧:?看,断下了吧,下面就F7跟进这个CALL吧,就来到这个按纽事件处了. 同样写个脚本,方便大家操作: 复制内容到剪贴板代码:var Addr? mov Addr,401000?loop:?find Addr,#740E8BD38B83????????FF93????????#?cmp $RESULT,0?je Exit?add $RESULT,0A?bp $RESULT?add $RESULT,1?mov Addr,$RESULT?jmp loop?Exit:?ret?三、易语言易语言的这种查找方法,同样适合有壳的程序,其他的就必须脱壳后再继续操作了.OD载入后,就F9运行程序吧,当程序运行后,ALT+E?选中易语言的核心库krnln,双击进去然后CTRL+B,查找FF 55 FC?查找到的这个CALL就是了,F2下断吧现在输入必须的内容后,单击对应的按纽吧看,断下了吧,下面就F7跟进吧,就来到按纽事件处了同样,写个脚本,方便大家复制内容到剪贴板代码:gpa"GetProcessHeap","kernel32.dll"? cmp $RESULT,0?je err?bp $RESULT?run?run?run?bc $RESULT?rtu??bp $RESULTfind eip,#FFE0#?cmp$RESULT,0?je err?bp $RESULT?run?bc $RESULT?stoMSG "按纽事件查找完毕!"?reterr:?MSG "脚本运行错误!请检查错误后再继续运行脚本!"? ret?四、VC++程序(非MFC程序)OD载入后,单击鼠标右键,选择"查找",然后是"所有命令"? 在弹出的输入框里,写入特征代码"sub eax,0a"?? 10.GIF (7 KB)?2008-9-14 12:02确定后,就来到下面的窗口???在下面的sub eax,0A处,双击进去吧:?? 12.GIF (16 KB)?2008-9-14 12:02来找这里后,在下面的je处跟随过去跟随来到的这个CALL,就是了,F2下断吧然后断下后,F7跟进,F8几次,就来到按纽事件了.五、MFC类程序当然判断MFC和非MFC的程序,靠大家自己去判断了OD载入后.ALT+E,来到可执行模块,找MFC的核心DLL:MFC42然后就双击进去然后就CTRL+F,查找特征代码:sub eax,0a同样,找到后,就在下面的je处跟随,跟随后看到的CALL,就是那个关键CALL了!断下后F7跟进,F8几次,就会来到按纽事件代码处了!方法就简单的介绍到这里了,当然只是抛砖引玉,其他的,还得多靠大家自己慢慢总结吧!? 附件?。
一、加密方式方法一:加保护密码,可对不同的过程加不同的密码优:方便易行缺:VBA key几秒钟,就将你的密码替换掉方法二:1、用UltraEdit32软件打开你想保护VBA的excel文件2、点查找>查找,查找“ID="{” (不带两端引号),注意点选找ASCII字符,会找到形如ID="{143DB7BA-14E4-40FF-BBBF-5C6612F797BE}"3、将大括号中的数字或字母随便改一改,然后保存,不影响你软件的使用,但查看工程时会提示你“工程不能查看”优:破解的方法中需使用十六进制编辑工具,能防住不会使用该工具的人缺:加密不方便二、破解方式excel2000以前的密码和VBA密码非常容易破解,网上有很多直接可以找出密码明文的软件excel2000以前的密码和VBA密码非常容易破解,网上有很多直接可以找出密码明文的软件excel xp以后,微软改进了VBA保护密码的加密方式,原来的看VBA密码的软件找不到VBA的密码了,找出VBA保护密码成为了一个难题。
好像安全了一些,但不久,就出现了破解VBA保护密码的软件,它的思路并不是找出VBA保护密码,而是直接用随机四个字母替换了VBA保护密码,用这种程序(网上并不难找),一个VBA采用密码保护的excel文件不到2秒的时间,就可以让你看到VBA源码。
后来有人对access文件的格式进行了研究,找到了新的加密方法(同样可用于excel文件)。
利用UltraEdit32或其它十六进制编辑工具编辑带VBA的excel文件中的ID或DPB中的内容。
经过这样处理的VBA会出现,“工程不可查看”的状态。
同样,也发现把加密VBA后的excel文件中的ID、CMG、DPB以及GC串替换为空,就会清除VBA保护密码。
(已有同志将该过程做成了excel的加载宏,不用十六进制工具就可)可以说excel中的vba源码毫无安全性,网上也见了一些利用VBA开发的程序,注册方式也比较先进,但源码容易看到,写个注册程序或干脆改掉注册较验也就毫无作用。