逆向第一课

定位到关键破解点并爆破

关键点

程序判断注册码是否正确的位置

爆破

通过对程序流程的修改,让程序判断失误

程序判断流程

1,点击注册按钮

2,读取注册码

3,判断注册码是否合法

4,提示用户是否注册成功

每一个步骤都有机会

我们是简单的注册码,使用的是易语言编写。实现

输入编辑框的内容等于123456时并按下注册按钮时弹出消息框显示注册成功。

api查找法

我们通常跟随getwindowtexta的函数;

使用od,查找该函数。

出现情况,我跳转后下断点,我希望是到读取内容是断下来,但是却不是。

我们看堆栈窗口。

可以看到提示信息

进行下一步的修改

1,可以nop关键点如je ..大量代码.. jmp...代码段(通常是if条件的判断)

2,可以改efl寄存器的数值,je判断与z,f有关,我们全都改成0

字符串搜索法

直接从安装插件使用中文搜索,可以查看到字符串,定位到相关区域

操作如上。

交叉引用法(字符串失效时即搜不到字符串)

考虑ida,od搜不到字符串时(od的中文搜索是个插件),使用ida。

ida默认不支持中文,我们考虑启动时属性,在目标中加入-dcdlture=all

view 中的string 发现或者shift+f12

发现目标考虑直接按x(交叉引用) 会出来一个框,会找到目标的地址。

okk直接拿下

推荐大佬博客,里面的介绍对我这个新人来说太友好了:逆向破解第一课之易语言注册程序破解 - かくれんぼ - 博客园

访问断点法(od搜不到字符串)

但在内存中不一定搜不到。od中的m,点击的内存,找到了注册失败,旁边可能是真正的注册码。(小白作者)

硬件访问断点

右键断点(p),下了断点回跟就可以找到关键点。如果od断不下,可能是插件的问题。可能不是软件的调试问题。换一个调试器就行

x64dbg这个就不错。

自动跟踪法

找控制台程序的入口点

vs编译后会打开od开头很多jmp,我们称为增量链接。快速编译。

在链接器里面的增量链接可以关闭。

程序卡死(死循环) 解决线程问题。自动步过,f7进,继续找,下断点。

慢慢的就会进入

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值