一个简单LINUX程序的逆向
开始之前的准备:
反汇编:IDA
十六进制编辑器: Hexworkshop
LINUX环境: KALI LINUX
调试: EDB (KALI自带的)
一个简单的动态追码, 大牛们就略过吧……
用16进制打开看看,前面有个明显的ELF标志

然后运行下看是啥样的……

额。。。 一个输入密码 然后验证的程序
下面说下我的做法吧:
主要是 静态分析(IDA) 和动态调试 (EDB)
把这个CM3扔到IDA中静态分析
在它调用的函数名称表里可以看到 GETS,MEMCMP等函数。。。。 然后可以自己脑补一下这个程序的运作了。。。。
用IDA的反编译功能, 在主界面F5一下 就能得到 接近源码的东西
(算法看起来很复杂的样子)

前面还有一大堆赋值语句暂时先不管。。
然后这里是关键点,拿 2个字符串进行 比较, 正确就出答案 …… 而在IDA分析中 这2个字符串的值都是未定义, 所以可以想到应该是在动态调试中生成的。

然后进入第2部分 :动态调试阶段
用EDB 载入

一路F8来到关键CALL

前面的赋值对应于

继续F8可以看到一堆CALL, 于IDA分析的 PUTS()等函数对应

密码是经过算法动态生成的, 通过分析源码中有一个CALL (MEMCMP) ,对应的反汇编也会有,所以我们一路跟至程序末尾,找到这个CALL , 此时内存中也会有相应的密码。

TEST EAX,EAX
JNZ 。。。。
验证密码是否正确。
此时栈中也有了对应的密码….


就搞定了……

一个简单LINUX程序的逆向的更多相关文章
- 关于SIGSLOT的一个简单的程序
废话少说直接看代码即可,这只是一个简单的程序,可以帮我们简单地明白SIGSLOT是怎么回事.至于深入研究自己去百度吧. #include "sigslot.h" using nam ...
- C#一个简单下载程序实例(可用于更新)
运行时的界面 using System; using System.Collections.Generic; using System.ComponentModel; using System.Dat ...
- 关于Hibernate的一个简单小程序
本人根据视频学习了一下三大框架中比较简单的一个Hibernate,并简单完成了一个运用Hibernate的小程序 Hibernate是一个简化web程序Dao层的一个框架,应用他,可以完全脱离sql语 ...
- scons构建自己的一个简单的程序
我在我的D盘下,新建一个文件夹,命名为try.在这个文件夹下新建两个文件,一个文件是test.c .里面的程序很简单: #include<stdio.h>#include<stdli ...
- Xamarin开发的一个简单画图程序分享
最近Xamarin比较火,于是稍微看了下,感觉接触过MVC的都应该能很快上手,还挺有意思,于是忍不住写了个简单的画图程序,之前看帖子有人说装不上或者无法部署,估计我比较幸运,编译完了一次就安装成功了, ...
- MVC-第一个简单的程序
来源于:https://www.cnblogs.com/miro/p/4030622.html 从空白开始,建立一个基本框架详细步骤 1,新建项目 NOTE:模板要选Empty,如果直接选MVC会产生 ...
- 创建一个简单MyBatis程序
文章目录 MyBatis基础 MyBatis 简介 创建一个MyBatis程序 1. 创建Java项目 2. 加载MyBatis包 3. 编写POJO类和映射文件 4.创建mybatis-config ...
- socketserver模块写的一个简单ftp程序
一坨需求... 用户加密认证 允许同时多用户登录 每个用户有自己的家目录 ,且只能访问自己的家目录 对用户进行磁盘配额,每个用户的可用空间不同 允许用户在ftp server上随意切换目录 (cd) ...
- DuiLib学习笔记2——写一个简单的程序
我们要独立出来自己创建一个项目,在我们自己的项目上加皮肤这才是初衷.我的新建项目名为:duilibTest 在duilib根目录下面有个 Duilib入门文档.doc 我们就按这个教程开始入门 首先新 ...
随机推荐
- Java-单机版的书店管理系统(练习设计模块和思想_系列汇总)
介绍: 本软件系列到此,我已经全部写完了. 项目练习目标 : 1.Java应用程序基本分析 2.培养面向对象编程的基本思想 3.Java基本设计模式综合应用 4.掌握分层和接口的基本设计 5.构建合理 ...
- 《算法问题实战策略》-chaper32-网络流
基本的网络流模型: 在图论这一块初步的应用领域中,两个最常见的关注点,其一时图中的路径长度,也就是我们常说的的最短路径问题,另一个则是所谓的“流问题”. 流问题的基本概念: 首先给出一张图. 其实所谓 ...
- wxPython学习笔记(初识)
今天正式开始学习wxPython,基于对类的不熟悉,理解有点生硬,但还是做了些笔记. 1.是什么组成了一个wxpython程序? 一个wxpython程序必须有一个application(wx.App ...
- uboot启动后在内存中运行裸机程序hello
如题,实现过程中发现3额问题,先写下来,待解答: 1.uboot启动后再dnw上打印许多信息,我想改变其中的打印信息或加上自己的打印信息以证明程序运行到何处.修改完后重新编译uboot.bin. 在D ...
- 集群中几种session同步解决方案的比较
1. 客户端cookie加密 .比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现. 问题:session中数据不能太多,最好只有个用户id. Sessi ...
- Oracle V$SESSION
SADDR session address SID session identifier 常用于链接其他列 SERIAL# SID有可能会重复,当两个session的SID重复时,SERIAL#用来区 ...
- android:allowbackup="true"
<application android:allowBackup="false" android:label="@string/app_name"> ...
- 奇妙的go语言(网页下载)
[ 声明:版权全部,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 眼下,网上关于网页爬行的代码非常多.可是,自从看了go语言的web下载代码之后,我才发现原来它 ...
- 秒味课堂Angular js笔记------$scope.$watch和$scope.$apply
$scope.$watch(watchFn , watchAction , deepWatch) 其中,watchFn是带有angular表达式或函数字符串: watchAction是一个函数或者表达 ...
- 《CSS网站布局实录》学习笔记(五)
第五章 CSS内容排版 5.1 文字排版 5.1.1 通栏排版 进行网页通栏排版时,只要直接将段落文字放置于p或者其他对象中,再对段落文字应用间距.行距.字号等样式控制,便形成了排版雏形. 5.1.2 ...