二进制:
通俗易懂的说法二进制其实就是0和1的组合数制,像十进制逢十进一一样,所谓二进制就是逢二进一。现如今的计算机系统使用的都是二进制系统。
二进制文件:
二进制文件通常为包含在 ASCII及扩展 ASCII 字符中编写的数据或程序指令的文件
国际上的一个统一的标准就是ASCII码。
二进制文件:
如何学好二进制安全;
读书破万卷
逆向工程核心原理
加密与解密-第三版
使用Ollydbg从零开始Cracking
IDA Pro权威指南-第二版
Intel汇编语言程序设计-第五版
搭建逆向工具平台
运行环境(Win,Linux,Android,x86,x64)
开发调试环境(C,java,python)
逆向环境(吾爱破解工具包)
训练平台
XCTF_OJ练习平台http://oj.xctf.org.cn/
实验吧决斗场 http://www.shiyanbar.com/ctf
Crackme http://crackme.de/
OJ平台 https://www.jarvisoj.com
OD、IDA使用方法
OD使用方法:
http://jingyan.baidu.com/article/215817f78131db1eda1423b1.html
http://blog.csdn.net/hgy413/article/details/7707906
IDA使用方法:
http://wenku.baidu.com/link?url=U45IkREXM351gqDZf1nig9HmF1mKQL0x39147FXE6eb5yVPfrvH-_B4DNJW3WIzr2wYIoh7HXUwGRaq_2xVAwaTncqKBtL-VEC3LP23bdDO
攻防世界 逆向(reverse)第一题re1:
下载附件后发现是exe文件,运行后,用IDA反编译,
法1:
按F5(有些电脑可能要按Fn+F5)能够查看反编译C代码结果(有一些电脑系统在ida32位的情况下不能按F5没回反应,这时可以试一下ida64位的)
法二:
按选好mian()主函数后:按“View”然后按“open subviews”继续“Generate pseudocote”记得反编译代码;
阅读代码发现,程序的功能是将用户输入的flag存入v9,然后将v9和v5比较,如果值相同输出aFlag
既然需要比较flag,那正确的flag应该已经作为一个常量保存在程序内部,可以尝试直接查找flag;
所以我们先把反编译后得到的伪代码的三个print()函数查看:
发现三个输出都没有真正的flag,于是我们应该去看看代码的三个函数(按R、H、D):
直到第三个出现了flag:
查阅资料了解到,反编译的结果不是一定正确的,IDA采用递归下降法进行反编译,它的优点在于很少会在反编译时把数据当作代码来处理,不过这次IDA很明显把flag当成代码,进行了反编译,因此在string界面无法找到flag
这次的flag也要反过来才是正确的
flag:
“DUTCTF{We1c0met0DUTCTF}”
由于在程序代码编译产生可执行文件过程中信息量是减少的,导致反编译器在反编译过程中需要做很多“猜”的工作,因此反编译结果也是可能存在错误。
我感觉学二进制和逆向因为没有基础,相关的知识没有学过所以比较吃力,当然逆向和二进制也比较难,所以还有很多知识要去学,还有很长的路要走。