前言:做题回顾。
下载后,解压并进行查壳->常规做题操作。
64bit ->>用64 IDA Pro打开。
程序入口点,不管用。
常规步骤:先进行查找字符串(shift+F12),再进入main函数观察。
双击这句话,进入到下图。
再双击->>>
(进入后如图所示,这是汇编代码。。 不熟悉可以按F5 将其转变为C语言的伪代码。
如下:
分析猜测函数名:
①sub_1400111D1(“ ”) 猜测是printf()【输出函数类型。】--->>>按”n“键可以改函数名字。
②sub_14001128F(“ ”)猜测是scanf() 【str1是数组(上面有写) 所以可以不用 " & "。
正向分析:(“/”键可以进行注释操作。)&&(双击str2可以查看它的值。)
tip:如果对 ASCII码 数字不敏感 可以 【先选中】>>> 【再加R键】转变为 ASCII码。
方法一:肉眼观察!!
所以,综上。:
【所以可以得知:也就是我们的flag】str1= {hell0_w0rld}
【验证】可以代入程序验证:(win+R > 输入:PowerShell >>>将reverse_1.exe拉入后回车。)
输入我们的 str1>>> {hell0_w0rld}
验证成功。
方法二:写脚本 T ` T
= =
因为我是锻炼我的写脚本能力所以,咱去写脚本实现输出flag。
(python不太熟悉,忘了。。。所以用C语言去实现该脚本。)
/*脚本思路:
由题意可知 str2的值
以及str1表示为输入的值>>>也就是我们的flag
str2经历了》》if ( Str2[j] == 'o' ) 的判断和满足其判断后的操作。
所以,我们只需要重走一遍该操作即可。
原因:按照原程序执行顺序,是先执行 scanf()上面的操作
,再比较判断str1【输入的值】和str2【变形之后的值】是否相等。
可得知>>> str2的变形(o->0并没有一开始就变形,而是在程序启动后才变形的。)
*/
ok。完成第二次写wp 哈哈哈哈哈~那咋了QAQ(快速靠近)