exe文件:逆向工程实验一.zip
※步骤一:运行程序,查看特征字符串"Please Input:"通过IDA Pro找到该字符串所在位置,即定位main函数
※步骤二: 在main函数中尝试反汇编,IDA报错,错误信息显示栈sp不平衡.打开IDA Optionals中的Stack pointer,分析程序中哪些位置栈不平衡.发现两处位置不平衡,将两处的push 0注释为nop
一般来说不平衡发生在调用函数前后,调用函数前push参数,那么在函数返回时应该观察SP是否调整去,比如 被调用函数返回时使用带参数返回指令ret N 或 调用者在调用函数后通过add esp,N
※步骤三:至此main函数可以反汇编,得到以下结果.观察各个函数,不难猜测:
sub_48CD46是printf函数,因为参数中带有输出字符串"Please Input"
sub_48C0EE是scanf函数,因为参数中带有模式字符串%s,第二个参数是一个地址,可能指向缓冲区,且带有一个常数30,一般是指缓冲区长度.那么unk_5F3068就是用户输入字符串的地址
sub_48A9A6是strle
逆向·网安
· 2023-03-23
· 1329 人浏览
Axuanz