前言:做题笔记。
额 常规操作 不管三七二十一 解压就查壳 O,0?
看不懂?
没关系 我也看不懂。。。
一般情况[一通乱说]>>反正你拉入64bit IDA Pro就对了 因为64bit可以兼容32bit的 一般不会出错。
进入之后 常规: shift +F12查找字符串 再进入main函数
这时,你可以东瞅瞅西看看啦,反正它给你看 0.o
78h>>>转之后>>> ' { '
所以?flag{hacking_for_fun}?
不管,去提交 QAQ
OK, 不出意外错了(不嘻嘻)
跟踪。汇编代码>>F5编译成C伪代码,, 额,我一般TAB键按照比较爽(嘻嘻)
认识的函数就 N键 改名字,不认识的,不认识。
进行正向分析:
方法一:肉眼观察。。。因为比较简单。。。
关键点转ASCII字符。
哦,strcmp类似 汇编cmp 返回值只有 0 或者 非0 (印象中是的) 0为F 非0为1
当 flag = s2 时, strcmp(flag,s2) 会返回0
if(!0) >>>if(True/1) >>执行 this is the right flag !
(对不起,话痨了 ┭┮﹏┭┮)
所以最终s2 = {hack1ng_fo1_fun}
这个验证不了,直接提交验证吧 嘻嘻。
方法二:(锻炼写脚本)
一样 python 忘了。。 用C语言去实现,,,
思路:首先分析 关键的原代码 >>> 对*(&flag + i)的解读 (看进行正向分析:如图 0.o?)
额,这题和 reverse1 差不多一样。 解释的话,也差不多一样,看之前的去吧(我懒)
关键点:数组在内存中的寻址方式以及表达的格式。>>>IDA Pro是C伪代码.
OK写完,收工。第三篇!