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

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

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

Mac OS软件分析与简单认识与破解_第1张图片

2.安装 HT editor 

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

本人不建议以上做法

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

Mac OS软件分析与简单认识与破解_第2张图片

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 

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 OS软件分析与简单认识与破解_第3张图片

得到

Mac OS软件分析与简单认识与破解_第4张图片

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

Mac OS软件分析与简单认识与破解_第5张图片

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

Mac OS软件分析与简单认识与破解_第6张图片

选择 mach-0/image得到

Mac OS软件分析与简单认识与破解_第7张图片

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

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

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

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

 

 

 
 
 

你可能感兴趣的:(Mac OS软件分析与简单认识与破解)