是读写属性
大体意思是:运行时须要输入命令行参数 --key <内容>
提示错误的key
先申请了一个内存空间
命令行参数的比较
为--key的时候 不跳转,而后取出第二个命令行参数。比较完不为 --key 后,要进行下一轮的比较,继续往下观察
对另外一个字符串作了个操做 而这个字符串恰好是第二个命令行参数
对字符串(乱码)作了些操做并输出猜想是解密函数,有多是输出正确或者错误的提示
观察对字符串作操做的函数
会对申请的空间作一些操做,能够下断点在calloc处,观察后续 对这个内存的操做
直接写参数,多个参数以空格间隔
比较命令行参数处设置断点
除去 --key 比较第二个参数的函数
解密字符串caloc处下断点,须要它的返回值EAX
循环结束后设置一个断点,观察内存变成什么样了
点击运行按键 两条警告后弹出一个选择调试信息文件(经尝试选择原文件自己就能够了)
比较key的地方
与明文字符串比较的地方
比较完以后对比 EAX的值 跟踪接下来的流程
解密字符串 F7 进入上边的 CALL 804853B caloc 后内存窗口跟踪EAX的值,F9 到函数结束的地方
因此,应该传入的参数是hello15
比较完长度,比较完每个字符后,返回1
跟踪接下来的解密 函数F9 到函数结束处的断点
解密出正确的提示
这个简单小程序复习了Linux的一些经常使用操做指令,如: 文件的信息 ls -l readelf -h Crackme 文件属性的修改 chmode 777 Crackme 可执行文件的运行: ./Crackme Linux下IDA 的静态分析和动态分析方法 因为这个IDA6.4版本不能直接F5 查看C语言代码,能够在Windows下静态分析完,再到Linux 下进行测试,不过,仍是但愿进行直接看汇编代码。熟能生巧嘛!