序列号型CrackMe逆向之OD技巧篇

Ollydbg使用指南 Ollydbg基本操作的汇总 阅读详情

    玩CrackMe最难的就是定位程序的验证逻辑位置,下面介绍几个使用OD定位的小技巧(示例程序使用crackme.chm中的Acid burn.exe)

搜索字符串法

    很多CrackMe在验证成功或者失败后都会弹出对话框或者在其他地方显示字符串提示信息,于是我们可以使用OD搜索这些字符串(当然只有这些字符串是常量才能搜索到,如果字符串加密了就没办法了,就要寻找其他方法),方法如下:

    知道出错提示信息后,将程序载入OD,然后在代码模块右键选择中文搜索引擎->智能搜索(注意搜索的模块必须是当前程序的模块,看地址就知道了,一般程序地址为0x4开头,如果不是则右键->查看->模块"程序名")

    在搜索结果窗口中按下CTRL+F并输入我们前面看到的提示信息,效果如下:

    双击跟进,然后在对应指令的HEX 数据窗口双击设置断点,效果如下(需要将所有出现提示信息的指令都设下断点,只要当我们按下按钮能成功中断程序的断点才是我们需要的,这时候删除其他断点即可):


    运行程序,然后重复我们最开始触发错误提示的逻辑,会发现程序被中断下来了,对应的验证逻辑就在断点附近~


暂停程序法

    既然失败会弹出对话框,那么我们如果能找到弹出失败提示对话框代码所在的位置(这时候已经处于失败流程),往前回溯下不就能找到验证程序逻辑的位置吗?

   首先修改OD的调试器选项,选项->调试设置->安全,去掉下面红线的勾

    载入程序,删除所有断点,然后触发出错提示框,在不关闭出错提示框的情况下按下F12或OD的暂停按钮

    暂停后效果如下

   查看调用堆栈,使用快捷ALT+K或者K图标或者菜单栏的查看栏

    结果如下:

    从上往下慢慢看,找到第一个以0x4开头的函数地址,Acid_bur.0042A1A9就是我们要关注的用户代码(栈顶是当前指令所处的函数位置,这个调用堆栈要怎么看呢?Acid_bur.0042FB32处发生了函数调用,被调函数是Acid_bur.0042A170,然后Acid_bur.0042A170函数执行到Acid_bur.0042A1A9处又发生了函数调用,被调函数为jmp.&user32.MessageBoxA,依次类推)。jmp.&user32.MessageBoxA指令所在的函数就是我们调用的MessageBox,即Acid_bur.0042A170用户代码调用的MessageBox函数,我们需要关心MessageBox的内部细节,但是调用它的函数Acid_bur.0042FB32是我们需要关注的,双击这个函数就可以看到我们已经到了程序的验证逻辑部分了~


API断点法

    程序既然要验证序列号,那么它应该要先读取序列号,所以我们可以在常见的字符串获取API上设置断点,比如GetWindowText、GetDlgItemText、GetDlgItemInt等等

    最好的设置方法是看程序模块的输入表,这个能明确知道程序到底用了哪个函数获取字符串,获取直接使用OD的插件来设置API断点。在用户代码窗口右键->查找->当前模块中的名称

    直接输入getwindowtext(不需要CTRL+F,大小写无所谓)就可以定位到我们要的API函数

    在对应API名称上右键->在每个参考上设置断点(看下有没有其他字符串获取API,重复这个步骤)

    运行程序,再次执行前面触发出错提示的步骤,结果会发现这边没有中断下来,说明程序并不是通过GetWindowTextA来获取输入文本的,Delphi程序可能有些特殊,所以这边这个方法就不行啰~这个方法在其他地方还是挺管用的,可以作为一种备用方案~



逆向第一课 定位到关键破解点并爆破 关键点 程序判断注册码是否正确的位置 爆破 通过对程序流程的修改,让程序判断失误 程序判断流程 1,点击注册按钮 2,读取注册码 3,判断注册码是否合法 4,提示用户是否注册成功 每一个步骤都有机会 我们是简单的注册码,使用的是易语言编写。实现 输入编辑框的内容等于123456时并按下注册按钮时弹出消息框显示注册成功。 api查找法 我们通常跟随getwindowtexta的函数; 使用od,查找该函数。 出现情况,我跳转后下断点,我希望是到读取内容是 阅读详情

相关推荐

简单逆向分析使用案例(2)--CrackMe_01.exe 找出密码

环境: win7 旗舰版 x64 OD2.01,1.1(吾爱破解版) PEiD0.95 使用资源http://download.youkuaiyun.com/detail/obuyiseng/9351217 中的 CrackMe_01.exe 技巧:借助OD中的栈回溯,使用分析--》分析代码让数据代码还原后,供我们使用。 第一步:简单测试。 随便输入点击确

oBuYiSeng的博客 7687

第②课——快速定位关键点并爆破

本文主要讲述了几种常用的爆破方法

Tandy12356_的博客 1508

逆向入门之crackme001-acid

Crackme

m0_57803259的博客 400

反汇编学习之路之查找参考字符串

ollydbg(下面简称OD)提供了这样的一个功能:可以查找程序运行中出现的字符串。 比如下面的该软件,会弹出这样的对话框: 我们可以在弹出这个对话框时,回到OD操作界面进行查找上述对话框中出现的字符串。 方法: 1,在下图所示的区域内鼠标右键,选择“查找(S)” 选项,接着选择“所有参考文本字串”选项: 2,接着在OD弹出的窗口中鼠标右键选择“查找文本”选项:

知其所以然 2万+

简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号

环境:      win7 旗舰版 x64      OD2.01,1.1(吾爱破解版)       PEiD0.95 使用资源       http://download.youkuaiyun.com/detail/obuyiseng/9351217 中的 CrackMe_01.exe 技巧:      借助OD中的栈回溯,逐一击破。

oBuYiSeng的博客 2705

OllyDbg实战:从零逆向分析CrackMe序列号验证算法

软件逆向工程是理解二进制程序内部逻辑的关键技术,通过将编译后的“黑盒”可执行文件转化为可理解的“白盒”过程,揭示其算法与工作机制。其核心原理在于使用调试器动态跟踪程序执行流,分析内存、寄存器与指令交互,从而还原原始设计意图。这项技术的工程价值在于支撑软件安全研究、漏洞挖掘与恶意代码分析,是安全工程师的必备技能。在应用场景上,常通过分析专门设计的CrackMe练习题来掌握基础逆向思维与工具使用。本文以OllyDbg动态调试器为例,结合序列号验证算法分析,详细演示从定位关键代码、理解验证逻辑到实施破解的完整流程

weixin_28622215的博客 545

【CrackMe 实战】逆向破解实战之 001 Acid burn.exe

CrackMe:是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。 最近迷上了逆向脱壳破解,玩的不亦乐乎。 于是我在吾爱破解(https://www.52pojie.cn/)网站,下载了一些破解专用工具,以及...

亮出锋芒,剑指苍穹 7768

CRACKME_Acid_burn_编号 1 逆向

Acid_burn 逆向 CRACKME系列会持续更新 CRACKME简介 这个东西具体是啥,我也不多做介绍,只需要知道的是这个是包含160逆向练习提,Acid_burn 是此练习的第一题, 点击即可下载 打开程序 拿到程序第一件事,先打开瞅瞅,然后测试一下 双击打开的第一个窗口 点击确定,就会看到如下窗口 可以看到第一个按钮是序列号/名字,点击它,然后随便输入 可以看到,报错窗口,这个窗口明显是一个MessageBox,使用LoadPe可以看出是A版的 使用OD分析 使用OD打开,在Messa

hgjiayou的博客 396

逆向分析CrackMe系列——CrackMe002

逆向分析CrackMe系列——CrackMe002 这次进行CrackMe002的逆向分析 AfKayAs (本系列的CrackMe资源均来自我爱破解网).   1. 运行程序,随机输入,进行弹窗: 2. 进行关键程序位置查找:     两种思路: 用相关工具进行源程序分析(如PEID),分析出其是否加壳以及其编程语言(此处未加壳,语言为VB);然后对VB中相关的窗口函数进行下断即可。 利用字符串查找(本次分析采用的方式): 1) 在OD中打开程序并且运行,进行弹窗后(不要进行暂停),在主窗口程序中搜索

草草君 1452

OD中文搜索插件

OD中文搜索插件

GitLab中国区注册终极解决方案:绕过+86手机验证的实战技巧(2023最新)

本文详细解析了GitLab中国区注册时绕过+86手机验证的三种实战技巧,包括开发者工具调试方案、使用国际号码的变通方案以及本地化部署替代方案。通过技术分析和实践验证,帮助开发者顺利注册GitLab账号,提升团队协作效率。

rl6adventurer的博客 1499

OllyDbg实战:逆向分析CrackMe序列号算法与调试技巧

软件逆向工程是信息安全领域的核心技术之一,它通过分析程序的执行逻辑来理解其内部工作机制。其基本原理是在受控环境中动态跟踪程序的运行,观察数据流和控制流的变化,从而推断出原始设计意图。这项技术的核心价值在于漏洞挖掘、恶意代码分析、软件保护机制评估以及算法理解。在软件安全、版权保护、兼容性开发等场景中,逆向分析都是不可或缺的技能。本文以经典的CrackMe序列号破解为例,详细演示了如何使用OllyDbg这一经典调试器进行动态调试,通过设置断点、跟踪寄存器、分析汇编指令等**调试技巧**,逐步定位并**逆向推导*

450

Redis中什么是Big Key(大key)问题?如何解决Big Key问题?

通俗易懂的讲,Big Key就是某个key对应的value很大,占用的redis空间很大,本质上是大value问题。key往往是程序可以自行设置的,value往往不受程序控制,因此可能导致value很大。redis中这些Big Key对应的value值很大,在序列化/反序列化过程中花费的时间很大,因此当我们操作Big Key时,通常比较耗时,这就可能导致redis发生阻塞,从而降低redis性能。用几个实际的例子对大Key的特征进行描述:● 一个String类型的Key,它的值为5MB(数据过大); ● 一

weixiaohuai的博客 3万+

逆向破解CrackMe手撕

160CrackMe第1题

xuanyitwo的博客 1119

UE5实战:如何用Georeference插件搞定百度地图坐标转换(附完整代码)

本文详细解析了在UE5中使用Georeference插件实现百度地图坐标转换的全流程,包括BD-09到UE内部坐标的转换算法、UTM投影配置及性能优化技巧。通过完整代码示例和实战案例,帮助开发者高效解决数字孪生项目中的地理坐标转换难题。

weixin_30955617的博客 94

最小可分辨对比度(MRC)

最小可分辨对比度的测试方法如下: 1)选择对比度测试靶板,一般有100%,50%,33.77%,15%,5%。 2)调整照度,确保能够清晰观测到图像中的靶标; 3)利用USAF1951分辨率靶观察找到能够分辨出的靶标。 1951 USAF分辨力测试图目前仍广泛地应用于测试光学成像系统(如显微镜和相机)的分辨能力。这种图案包括几组由三条短线构成组合,短线的尺寸从大到小。成像系统无法辩明的...

6272

【吾爱】逆向实战crackme160破解记录(四)

CrackMe逆向分析摘要 badboy分析 使用VB Decompiler静态分析发现两个验证逻辑: 简单验证:Text3内容需等于Label3标题 复杂验证:用户名至少5字符,通过特定算法计算序列号(Sum1+"-"+Sum2) 调试发现寄存器存有特殊字符串,测试确认是正确序列号 AI协助修正算法脚本,实现用户名到序列号的自动生成 bjanes.1分析 PEiD检测为VB程序,仅有序列号验证 VB Decompiler分析显示验证逻辑为: 序列号需满足特定算法计算结果 根据算法逻辑编

CK_0ff的博客 1387

Python爬虫实战:5分钟搞定Web of Science文献批量导出与解析(附完整代码)

本文提供了一套利用Python爬虫技术,快速实现Web of Science文献批量提取与解析的完整方案。通过解析官方导出的HTML文件,结合BeautifulSoup和pandas库,可将文献数据自动转换为结构化的Excel/CSV表格,帮助科研人员高效管理文献信息,节省大量手动整理时间。

weixin_29050513的博客 1166

逆向笔记---160CrackMe之001

本文章是依照原作者文章写出。本文章仅供参考,学生作业。

2301_80450777的博客 1120

0.1 ROCm rocr-libhsakmt实现深度剖析专栏介绍

本专栏深入解析AMD ROCm生态核心组件rocrruntime,从底层硬件交互到上层封装实现。重点剖析libhsakmt驱动层的七大核心模块设计,包括拓扑管理、队列调度、事件同步等关键机制;详解C++接口封装策略与工程实践,如资源管理、多线程优化等。通过"硬件-驱动-应用"全链路技术拆解,帮助开发者深入理解ROCm运行时机制,解决性能调优、调试等实际问题,为HPC/AI应用开发提供底层技术支撑。

图形/计算GPU的驱动与虚拟化技术分享园地 5981

《FPGA DDR3权威实战:从基础到高速故障录波系统》专栏导览:从不知所措到心中有数

本文是一份DDR3实战指南,作者从自身学习经历出发,分享了一套循序渐进的DDR3应用路线图。专栏包含12篇文章,从基础配置(MIG IP核、AXI总线)、仿真测试到实际项目应用(功能测试、性能测试),最后深入原生MIG接口实战,通过一个高速故障录播系统案例完整展示DDR3开发流程。文章特别强调实践性,旨在帮助读者系统掌握DDR3开发技能,避免作者当年踩过的坑。每篇都配有优快云链接,适合FPGA开发者按顺序学习参考。

FPGA_小田老师的博客 331

【吾爱】逆向实战crackme160破解记录(二)

本文记录了对两个Delphi编写的crackme程序(ALoNg3x.1和ALoNg3x.2)的分析过程。对于ALoNg3x.1,通过逆向分析发现其验证逻辑包含:(1)用户名长度需>5;(2)序列号计算公式为阶乘因子乘以用户名ASCII总和减31337;(3)另一验证将序列号转换为特定大写字母。作者编写了对应的Python脚本生成有效凭证。ALoNg3x.2采用了类似结构,通过Dede和xdbg定位关键按钮事件地址进行分析,最终目标都是使特定按钮消失以显示验证成功的图片。文章展示了从静态分析到动态调试

CK_0ff的博客 2017

Qt C++ 电子海图与作战叠加(Overlay)系统

lab_pos->setText(QString("坐标: X%1 Y%2").arg(p.x(),0,'f',0).arg(p.y(),0,'f',0));lab_distance->setText(QString("距离: %1 海里").arg(dist,0,'f',1));lab_bearing->setText(QString("方位: %1°").arg(bear,0,'f',1));// 绘制S-57海图基底。scene->addText("封锁线").setPos(450,180);

寒寒豆豆软件公司的博客 496

浅谈逆向——从案例谈OD的使用(OD的使用2)

浅谈逆向-从案例谈OD的使用从TraceMe谈OD基本操作准备工作加载目标文件进行调试单步追踪 从TraceMe谈OD基本操作 案例来自加密与解密第四版 附上下载链接 传送门: 链接: https://pan.baidu.com/s/1CBjbHRWnd-ULrsWfiAZhlg 提取码: 9ede 准备工作 Windows程序由于要使用API函数,在分析中以API函数作为切入点就使过程变得容易起...

qq_38684512的博客 2256

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

CrackMe逆向实战:用OllyDbg还原序列号算法与注册机编写

逆向工程中,软件序列号校验是常见的保护机制,而调试器则是分析这类逻辑的核心工具。通过 OllyDbg 加载目标程序,利用字符串参考定位成功与失败提示,再回溯到关键跳转和比较函数,是典型的静态分析路径。进一步动态跟踪算法函数,观察寄存器与内存变化,可以把汇编指令还原为高级语言伪代码,从而理解校验原理。这类技术广泛应用于软件漏洞分析、恶意代码研究和程序兼容性调试。本文以一个典型 CrackMe 为靶标,完整演示从查壳、字符串定位、关键跳转确认,到还原移位累加型序列号算法并编写注册机的过程,适合逆向入门者按步骤操

weixin_29323273的博客 266

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

序列号型CrackMe逆向之IDA技巧篇

前面我们探讨了用OD来定位

3448

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 使用IDA定位基于MFC的CrackMe的按钮函数-----理论篇
下一篇: ESP定律脱压缩壳
银翼魔术师
博客等级 码龄17年 41粉丝 32原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值