Mac OS软件分析与简单认识与破解

1.安装Clang(如已安装xcode则不需要)

首先打开一个终端,点击Launchpad->其他->终端,在终端中输入clang并回车,系统会自动检测到我们有没有安装Clang编译器,然后会提示我们是否下载并安装命令行开发者工具。

图像说明文字

2.安装 HT editor 

可尝试在HT edtior 官网安装 http://hte.sourceforge.net(官网只提供window版本二进制文件,mac上需 ./configure&&make)

本人不建议以上做法

建议在 https://www.cakebrew.com 网站下载 Cakebrew (以后也方便管理)找到ht 安装。

3.Homebrew

在终端中运行 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)

......

会要求输入password 输入电脑密码安装

4.创建文件夹CrackMe01

在终端 $ cd CrackMe01

创建CrackMe 的源代码文件 cm01.c:

$vim cm01.c

按 “a”进入编辑模式,

输入代码

#include <stdio.h>

int main()
{
    int secret = 0;
    printf("Please enter the secret num:");
    scanf("%d",&secret);
    if (secret != 123)
    {
        printf("Incorrect secret num.\n");
        return 0;
    }

    printf("Hello world!\n");
    return 0;
}
(学过c语言便可以分析代码)输入完后按"ese"退出编辑模式,输入 :wq 保存并退出vim 若编译错误可重新进行。

然后用Clang 编译 $clang cm01.c -o cm01

分别尝试输入 123 和345

可以得到你分析代码认为得到的结果。

5.使用HT 破解(使得无论输出123 或345 得到的结果都是Hello World)

首先了解

  • jz指令:跳转指令,可以理解成如果前面比较指令的比较结果相同则跳转到指定的地址,如果不相等就不跳转,继续执行它下面的指令;
  • jnz指令:与jz指令正好相反,不相等则跳转;
  • jmp指令:不管任何情况都会进行跳转;
  • call指令:调用过程指令,一般对应高级语言中的函数调用。

开始对生成的文件进行操作 ==

命令行内运行 如图所示

得到

mac上 fn+f3 search Clang cm01.c生成的cm01文件

切到反汇编界面 按fn+f6 得到select mode 对话框

选择 mach-0/image得到

之前知道jz指令为相等跳转指令而jnz为不相等跳转指令

找到jz指令那一行 快捷键control+a

修改jz.......... 改为jnz.........将得到红色的数字85 按fn+f2保存 文件保存后红85消失。

接下来可CrackMe 程序,得到的便是无论输入123或345都是得到hello world的结果。

 

 

 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值