文件放入虚拟机 /root 目录下

动态调试ELF文件Crackme

查看文件信息

动态调试ELF文件Crackme

是读写属性

修改文件属性,添加可执行

动态调试ELF文件Crackme

运行

动态调试ELF文件Crackme

大致意思是:运行时需要输入命令行参数 --key <内容> 

带命令行参数运行

动态调试ELF文件Crackme

提示错误的key

IDA 动静结合调试

静态分析

查看文件信息

动态调试ELF文件Crackme

使用32位IDA打开这个程序

动态调试ELF文件Crackme

跟踪call main 发现跟到了交叉引用

动态调试ELF文件Crackme

跟踪main 上一条的offset,有一个流程图

动态调试ELF文件Crackme

具体行为

动态调试ELF文件Crackme

先申请了一个内存空间

动态调试ELF文件Crackme

命令行参数的比较

动态调试ELF文件Crackme

为--key的时候 不跳转,然后取出第二个命令行参数。比较完不为 --key 后,要进行下一轮的比较,继续往下观察

动态调试ELF文件Crackme

对另一个字符串做了个操作 而这个字符串刚好是第二个命令行参数

动态调试ELF文件Crackme

动态调试ELF文件Crackme

对字符串(乱码)做了些操作并输出猜测是解密函数,有可能是输出正确或者错误的提示

动态调试ELF文件Crackme

观察对字符串做操作的函数

动态调试ELF文件Crackme

会对申请的空间做一些操作,可以下断点在calloc处,观察后续 对这个内存的操作

动态调试ELF文件Crackme

基本上流程也就这些了,接下来进行动态调试

动态调试

调试器设置

动态调试ELF文件Crackme

命令行参数传递

动态调试ELF文件Crackme
动态调试ELF文件Crackme

直接写参数,多个参数以空格间隔

设置断点

比较命令行参数处设置断点

动态调试ELF文件Crackme

除去 --key 比较第二个参数的函数

动态调试ELF文件Crackme

解密字符串caloc处下断点,需要它的返回值EAX

动态调试ELF文件Crackme

循环结束后设置一个断点,观察内存变成什么样了

程序运行状态

点击运行按键
两条警告后弹出一个选择调试信息文件(经尝试选择原文件本身就可以了)

动态调试ELF文件Crackme

比较key的地方

动态调试ELF文件Crackme

与明文字符串比较的地方

动态调试ELF文件Crackme

动态调试ELF文件Crackme

比较完之后对比 EAX的值 跟踪接下来的流程

动态调试ELF文件Crackme

解密字符串 F7 进入上边的 CALL 804853B
caloc 后内存窗口跟踪EAX的值,F9 到函数结束的地方

动态调试ELF文件Crackme

所以,应该传入的参数是hello15

重新设置参数动态观察

动态调试ELF文件Crackme

比较完长度,比较完每一个字符后,返回1

动态调试ELF文件Crackme

跟踪接下来的解密 函数F9 到函数结束处的断点

动态调试ELF文件Crackme

解密出正确的提示

直接验证

动态调试ELF文件Crackme

总结

这个简单小程序复习了Linux的一些常用操作指令,如:

文件的信息    ls -l         readelf -h Crackme
文件属性的修改    chmode 777 Crackme
可执行文件的运行:    ./Crackme
Linux下IDA 的静态分析和动态分析方法

由于这个IDA6.4版本不能直接F5 查看C语言代码,可以在Windows下静态分析完,再到Linux 下进行测试,不过,还是希望进行直接看汇编代码。熟能生巧嘛!

相关文章:

  • 2021-07-12
  • 2021-12-04
  • 2021-05-03
  • 2022-12-23
  • 2021-10-04
  • 2021-06-24
  • 2021-07-01
猜你喜欢
  • 2021-08-13
  • 2021-12-22
  • 2021-05-27
  • 2021-09-13
  • 2021-06-22
  • 2021-04-13
相关资源
相似解决方案