C语言逆向系列之破解一个简单的C语言程序

以下正文

本节教程将教大家如何去逆向分析和破解一个简单的C程序,需要大家熟悉基本的C语言语法,用到工具有:VC6、IDAPro、OD、UE等工具。

下面我们开始。

首先,我们用VC6写一个简单的密码验证程序,思路呢,很简单,就是让用户输入密码,然后用strcmp比较是否一样,一样的话提示正确,不正确的提示错误并重新输入。代码如下:

怎么样,简单吧!

运行起来试试,逻辑很简单,只有输入正确密码123456的时候才会打印YES然后结束程序,否则一直提示NO并且一直让你输入~

那现在,我们就来Crack掉它!让我们随意输密码都可以通过!怎么样,够酷吧!

OK,开始!

首先,用IDAPro打开我们用VC6写好的这个密码验证程序,打开流程图,如下:

在这个就像这个程序的流程图中,我们可以看到里面的字符串,譬如“please input passwd”以及“yes”和“no”。并且可以看到yes和no位于两个“中”,很明显是两个处理流程。在它们上面同一个处理块结尾最后注意有一句:jnz short loc_401073 这就是一句跳转语句,jnz意思为不相等则跳转的意思,后面带一个地址。所以灵感来了,直接在这里进行更改。比如可以把jnz(不相等则跳转)换成jz(相等跳转),可想程序将大变!

改动之前,需要先知道一个公式,即:文件偏移地址 = 虚拟内存地(VA)址 – 装载基址(image base) – 节偏移

我们现在可以用IDA查看jnz的所在指令地址,但仅仅是虚拟内存地址,而装载基址在windows中PE程序一般都是0x00400000,节偏移可以用另一个工具找到。OK继续

接下来就查地址,继续动工。首先,鼠标点击jnz命令让光标停留在这里,单后空格切换到对应的指令,查看该语句所在的地址位置。如下图:

看到了吗?在text段的00401062处! OK,先记下来,一会用

这个时候,IDA可以退下了…

然后,启动另一个工具,loadPE,这个干啥用的呢?答:算算咱们代码在这个程序中的节偏移!如下:

先启动

然后点击PE Editor 选中我们的exe目标程序,然后点击section,如下

怎么算节偏移呢?用VOffset减去ROffset即可,当然这里很明显为零嘛(虽然感觉没啥用,大多数都是0,不过算算好)

这个时候考数学了,直接带入公式算吧,文件偏移地址就是:00401062 – 0x400000-0 答案就是1062! 哦不应该是0x00001062!

那么,好了,最后启动大名鼎鼎的UE修改工具!加载它!

搜索地址0x00001062如图:

然后将75改为74即可!

为啥? 答:因为jz的机器码就是74!

最后保存!大功告成!

再运行看看,随便输个密码:

敲回车!看看~咩哈哈哈~

看到效果了吗? 照着做一遍吧!有问题随时联系我们的CTO哦!

原文发布于微信公众号 - 编程范(dotcpp)

原文发表时间:2017-02-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏進无尽的文章

扒虫篇-Debug几个实用的方法

Bebug调试程序是开发中最常见的问题,对于一些简单有效的调试技巧的了解是很有必要的。这篇文章就列举Debug中用到的一些简单的技巧。

26110
来自专栏葡萄城控件技术团队

深入解析 DataGrid 过滤功能

过滤是DataGrid这样的表格控件的基本功能之一,也是非常重要的特性。微软提供的标准DataGrid相信大家都很熟悉了。本文要解析的不是标准DataGrid,...

27170
来自专栏宏伦工作室

微信红包自动监测

97030
来自专栏Albert陈凯

MAC上iTerm 2安装与使用

iTerm2是MAC下最好用的终端工具,并且还是免费的。iTerm2 是配置完毕开箱即用的 tmux,有标签变色、智能选中等特色功能。在日常开发中,我们难免会与...

80520
来自专栏软件测试经验与教训

XSS漏洞总结

同源策略 影响源的因素:host,子域名,端口,协议 a.com通过以下代码:

78530
来自专栏西安-晁州

vue.js应用开发笔记

看vue.js有几天了,之前也零零散散的瞅过,不过一直没有动手去写过demo,这几天后台事比较少,一直在讨论各种需求(其实公司对需求还是比较重视与严谨的,一个项...

53910
来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(二十四):全局页面配置

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

30430
来自专栏张戈的专栏

利用腾讯云 COS 云对象存储定时远程备份网站

一、优点分析 内网传输:和阿里云 OSS 一样,腾讯云 COS 同样支持内网和外网文件传输,对于腾讯云服务器,使用内网传输绝对是最快、最稳定的备份方案! 免费...

3K100
来自专栏云飞学编程

python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件

随便找一段文字,然后点击右键查看网页源代码,看看是否存在该文字,如果存在,那么这个网页就是静态网站了!很幸运,这个网站居然是静态的。

15920
来自专栏不想当开发的产品不是好测试

常用业务接口界面化 in python flask

背景: 对于业务测试来说,有一些基础业务接口是需要经常调用的,如根据userId查询某人的信息,修改某人的xx属性,一般的接口都有验签(或者说token)机制,...

271100

扫码关注云+社区

领取腾讯云代金券