linux程序防逆向,一个简单LINUX程序的逆向

开始之前的准备:

反汇编:IDA

十六进制编辑器: Hexworkshop

LINUX环境: KALI LINUX

调试: EDB (KALI自带的)

用16进制打开看看,前面有个明显的ELF标志

20180922080326153150.png

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

20180922080326439294.png

额。。。  一个输入密码   然后验证的程序

下面说下我的做法吧:

主要是    静态分析(IDA)    和动态调试

(EDB)

把这个CM3扔到IDA中去  ,  可以得到:

20180922080326789894.png

在它调用的函数名称表里可以看到

GETS,MEMCMP等函数。。。。

然后可以自己脑补一下这个程序的运作了。。。。

用IDA的反编译功能,      在主界面F5一下 就能得到  接近源码的东西

(算法看起来很复杂的样子)

20180922080327180534.png

前面还有一大堆赋值语句暂时先不管。。

然后这里是关键点,拿 2个字符串进行 比较,  正确就出答案   ……  而在IDA分析中

这2个字符串的值都是未定义,  所以可以想到应该是在动态调试中生成的。

20180922080327350462.png

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

用EDB 载入

20180922080327561408.png

用EDB  载入, 一路F8来到关键CALL

20180922080327790909.png

前面的赋值对应于

20180922080328028222.png

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

20180922080328173736.png

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

, 此时内存中也会有相应的密码。

20180922080328483318.png

TEST EAX,EAX

JNZ 。。。。

验证密码是否正确。

此时栈中也有了对应的密码….

20180922080328784111.png

20180922080328970641.png

就搞定了……

20180922080329186470.png

原文:http://www.cnblogs.com/wu-yan/p/3616518.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值