网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月31日漏签0天
cpp吧 关注:915贴子:1,482
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 13回复贴,共1页
<<返回cpp吧
>0< 加载中...

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

  • 只看楼主
  • 收藏

  • 回复
  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
前言
今天起,为增加大家学习C语言的趣味性、更深层次的学习C语言、学习更实用的编程技术,我们今后将陆续开设逆向方向的教程专题,希望大家喜欢!
---C语言网


  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
本节教程将教大家如何去逆向分析和破解一个简单的C程序,需要大家熟悉基本的C语言语法,用到工具有:VC6、IDAPro、OD、UE等工具。
下面我们开始。
首先,我们用VC6写一个简单的密码验证程序,思路呢,很简单,就是让用户输入密码,然后用strcmp比较是否一样,一样的话提示正确,不正确的提示错误并重新输入。代码如下:


2025-05-31 08:13:41
广告
  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
怎么样,简单吧!
运行起来试试,逻辑很简单,只有输入正确密码123456的时候才会打印YES然后结束程序,否则一直提示NO并且一直让你输入~
那现在,我们就来Crack掉它!让我们随意输密码都可以通过!怎么样,够酷吧!


  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
OK,开始!
首先,用IDAPro打开我们用VC6写好的这个密码验证程序,打开流程图,如下:


  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在这个就像这个程序的流程图中,我们可以看到里面的字符串,譬如“please input passwd”以及“yes”和“no”。并且可以看到yes和no位于两个“中”,很明显是两个处理流程。在它们上面同一个处理块结尾最后注意有一句:jnz short loc_401073 这就是一句跳转语句,jnz意思为不相等则跳转的意思,后面带一个地址。所以灵感来了,直接在这里进行更改。比如可以把jnz(不相等则跳转)换成jz(相等跳转),可想程序将大变!
改动之前,需要先知道一个公式,即:文件偏移地址 = 虚拟内存地(VA)址 – 装载基址(image base) – 节偏移
我们现在可以用IDA查看jnz的所在指令地址,但仅仅是虚拟内存地址,而装载基址在windows中PE程序一般都是0x00400000,节偏移可以用另一个工具找到。OK继续


  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
接下来就查地址,继续动工。首先,鼠标点击jnz命令让光标停留在这里,单后空格切换到对应的指令,查看该语句所在的地址位置。如下图:

看到了吗?在text段的00401062处! OK,先记下来,一会用
这个时候,IDA可以退下了…


  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
然后,启动另一个工具,loadPE,这个干啥用的呢?答:算算咱们代码在这个程序中的节偏移!如下:
先启动


  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
然后点击PE Editor 选中我们的exe目标程序,然后点击section,如下

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


2025-05-31 08:07:41
广告
  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个时候考数学了,直接带入公式算吧,文件偏移地址就是:00401062 – 0x400000-0 答案就是1062! 哦不应该是0x00001062!
那么,好了,最后启动大名鼎鼎的UE修改工具!加载它!
搜索地址0x00001062如图:

然后将75改为74即可!


  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为啥? 答:因为jz的机器码就是74!
最后保存!大功告成!
再运行看看,随便输个密码:


  • 山石榴树之恋
  • 六年级
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
敲回车!看看~咩哈哈哈~
-----C语言网


  • whynot
  • 幼儿园
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
。。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 13回复贴,共1页
<<返回cpp吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示