《MacOS软件安全与逆向分析》札记 一

582 阅读1分钟

HT Editor:是一个开源跨平台的十六进制编辑器,但他的功能可远远不止十六禁止编辑器这么简单,它还有强大的反汇编/汇编功能。支持X86/X64/Arm/Power等多种处理器。

  • 安装HT Editor:

    使用Brew安装: brew install ht

截屏2021-03-23 下午6.40.24.png

  • 创建目标源文件cm01.c
#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;
}
  • 使用clang编译源文件 clang cm01.c -0 cm01
  • 使用HT Editor进行破解 终端执行ht, 打开Ht Editor;

fn+F3选择目标文件 回车选定目标文件 (或在直接输入目标文件地址)

截屏2021-03-23 下午7.39.34.png

空格键选择mode,使用上下键选择 Mack-0/images

截屏2021-03-23 下午7.41.24.png

使用search功能搜索程序会提示的一句“Incorrect secret num” ,Fn+F7 调出搜索界面, 使用tab选中mode,使用上下键选择dispaly:regex

截屏2021-03-23 下午7.46.08.png

在e中输入“Incorrect” 使用空格键选中 【x】caselnsensitive

截屏2021-03-23 下午7.49.38.png

按回车搜索, 光标会定位到要搜索的地方

截屏2021-03-23 下午7.50.44.png

ctrl+a修改这里的汇编代码成 jnz loc_100003d1d ,按Tab键选择OK ,回车确认修改;

截屏2021-03-23 下午7.54.47.png

按fn + F2保存修改后的文件;在终端执行cm01文件: ./cm01

截屏2021-03-23 下午7.57.58.png

环境:MacOS11.2.3

相关汇编指令:

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