一个简单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排序算法-选择排序
public class SelectionSort { private static void selectSortTest() { int[] sortArray = { 5, 2, 4, 1, ...
- jquery 定时器
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...
- 数据库 —— 基于 ORM 模型的 Hibernate 的使用(java)
目录: 使用Hibernate Tool 从数据库中生成对应的实体类 1.使用Hibernate Tool 从数据库中生成对应的实体类 Title:Using Hibernate Tools gene ...
- java垃圾回收算法
1.标记-清除 2.标记-复制 3.标记-整理 4.分代混合算法
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
- [Typescript] Introduction to Generics in Typescript
If Typescript is the first language in which you've encountered generics, the concept can be quite d ...
- mysql 修复表和优化表
REPAIR TABLE `table_name` 修复表 OPTIMIZE TABLE `table_name` 优化表
- Linux中命令行编译java接口总是提示找不到符号的疑难杂症的解决
今天学习java的接口,在linux的命令行下写代码练练手吧,啪啪啪一顿猛敲,写了一个接口UsbInserface,UDisk继承UsbInterface,写完了那就编译到bin目录呗. 当时写程序的 ...
- 关于数据库中varchar/nvarchar类型数据的获取注意事项
当在页面后台获取数据库表中某字段的数据时,需注意该数据的类型.防止因实际数据的字符长度因达不到指定数据类型规定的字符长度而导致空格的占位符. 比如: MSSQL中某一表的结构如下: 表中的数据: ...
- Nginx 反向代理配置实例(转)
user www www; worker_processes ; error_log logs/error.log notice; pid logs/nginx.pid; worker_rlimit_ ...