黑客攻击-程序破解(1)

文章目录

      • 一个简单的程序
      • 可执行文件生成过程
        • 预处理过程
        • 编译
        • 汇编过程
        • 链接过程
        • 一步到位
      • 破解test程序
        • 运行程序
        • 程序破解
        • Radare2
        • 查看程序信息
        • 破解之旅
        • 验证
      • Rasm2
      • web页面
      • 公众号

一个简单的程序

程序功能是判断用户输入,如果是"burning",则输出"success",否则,输出"fail"。程序代码如下:

#include
#include
#include

int main(){
        char buff[1024];
        char *password = "burning";
        scanf("%s",buff);
        if (strncmp(password,buff,strlen(password)) == 0){
                printf("success\n");
        }
        else{
                printf("fail\n");
        }
        return 0;
}

可执行文件生成过程

预处理过程

主要处理源文件中以“#”开头的预编译指令,经过预编译处理后,得到的是预处理文件(如,test.i) ,它还是一个可读的文本文件 。

gcc –E test.c –o test.i

编译

将预处理后得到的预处理文件(如 test.i)进行词法分析、语法分析、语义分析、优化后,生成汇编代码文件。经过编译后,得到的汇编代码文件(如 test.s)还是可读的文本文件,CPU无法理解和执行它。

gcc  -S test.i -o test.s

汇编过程

汇编程序(汇编器)用来将汇编语言源程序转换为机器指令序列(机器语言程序)。汇编结果是一个可重定位目标文件(如 test.o),其中包含的是不可读的二进制代码,必须用相应的工具软件来查看其内容。

gcc –c test.s –o test.o

预处理、编译和汇编三个过程针对一个模块(一个.c文件)进行处理,得到对应的一个可重定位目标文件(一个.o文件)。

链接过程

将多个可重定位目标文件合并以生成可执行目标文件。

一步到位

直接将.c文件转化为可执行目标程序(ELF)。

gcc test.c -o test

破解test程序

运行程序

黑客攻击-程序破解(1)_第1张图片

程序破解

如果输入任何内容,都显示success,则说明test程序破解成功。

Radare2

Radare2在逆向方面是可以比肩IDA Pro的,从学习的角度来说,更建议使用Radare2。因为IDA的F5功能具有反汇编的功能可以直接把汇编代码翻译成C语言,这样反倒不会关注汇编语言了,同时在Linux下,IDA破解版也不太好用。

在这里对Radare2进行简单的介绍。

查看程序信息

使用如下rabin2 -I test命令查看test程序信息。
黑客攻击-程序破解(1)_第2张图片
通过rabin2 -z test 查看来自数据段的字符串。
黑客攻击-程序破解(1)_第3张图片

破解之旅

  1. 打开Radare2。 r2 -w test
  2. 分析信息。aa
  3. 查看所有的flag。Radare2会将所有有用的信息和特定的名字绑定在一起,比如区段、函数、符号、字符串,这些都被称作 ‘flags’, flags 被整合进 ,一个 flag 是所有类似特征的集合。fs
  4. 查看字符串引用
    1. fs strings;f 输出结果是:0x000008ef 8 str.success
    2. axt @@ str.sucess ‘axt’ 命令用来在 data/code段里找寻某个地址相关的引用
  5. 地址跳转 s 0x81c黑客攻击-程序破解(1)_第4张图片
  6. 查看汇编代码 pdf黑客攻击-程序破解(1)_第5张图片
  7. 进入可视化页面,查看流程图。 v黑客攻击-程序破解(1)_第6张图片
  8. 通过流程图,很容易看出存在条件跳转,如果能够让所有的条件都走success流程,那么程序就算破解成功了。
  9. 修改jne 0x82ajne 0x81c,则无论怎样,都会走success流程而不会走fail的流程。
  10. 跳转到jne 0x82as 0x0000081a
  11. 修改指令,所有流程都走0x81c。 wx 7500
  12. 查看修改内容。 pd 3黑客攻击-程序破解(1)_第7张图片
  13. 退出。q

验证

运行test程序,无论输入什么内容,都是会输出success的!!!!
黑客攻击-程序破解(1)_第8张图片

Rasm2

rasm2 is an inline assembler/disassembler。在上面修改代码的时候,是通过wx 7500来让所有的流程都走success流程的,这个机器码7500是怎么来的?通过如下的命令就可以获得,其中的0x02是0x81c和0x82a的偏移。

rasm2 -a x86 -b 32 "jne 0x02"

web页面

Radare2自带了内嵌的Web服务器,服务器提供了纯html/js接口可发送ajax请求。可以使用下面的命令进行启动:

r2 -c=H test

界面效果如下:
黑客攻击-程序破解(1)_第9张图片

公众号

更多内容,欢迎关注我的公众号:无情剑客。
黑客攻击-程序破解(1)_第10张图片

你可能感兴趣的:(漏洞,网络与安全,Windows开发)