Author Archives: Sian

Theos的安装及简单使用

1、Theos是iOS越狱插件开发的集成环境,它可以创建工程,调用XCode的命令行工具编译、ldid签名打包,并提供上传手机、安装等一系列操作,安装成功后可以Cydia的已安装插件中看到。

2、安装ldid&dpkg

2.1、安装ldid
2.1.1、参考链接:https://brewinstall.org/Install-ldid-on-Mac-with-Brew/
2.1.2、安装命令:

1
yusian@SianMac2:~/Documents/Reverse$ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
1
yusian@SianMac2:~/Documents/Reverse$brew install ldid

2.1.3、必须要说的是,第一条命令是安装Homebrew,也许你Mac上早安装过Homebrew了,但也强制建议再执行一次该命令,可将Homebrew升级到最新版本,这里可能会是个坑!!因为XCode10现在废弃了以前的libstd++这个c++库,取而代之的是libc++,如果是XCode10,并且没有升级到最新Homebrew,可能在brew install ldid时报错

2.2、安装dpkg
2.2.1、dpkg是Theos依赖的工具之一,dpkg是Debian Packager的缩写。我们可以使用dpkg来制作deb,Theos开发的插件都将会以deb的格式进行发布的。所以我在安装Theos之前要安装dpkg
2.2.2、安装命令

1
yusian@SianMac2:~/Documents/Reverse$brew install dpkg

2.2.3、这里又要啰嗦一句,如果不安装dpkg,可能后续你一切顺利,在最后关头要将deb打包安装到手机上时报错了,我踩到的坑是这样的:[……]

继续阅读

iOS脱壳工具dumpdecrypted的基本使用

1、啥是脱壳(也叫砸壳)?我试着从头开始说起。
1.1、安装在iPhone上的App扩展名为.ipa,ipa中最关键的可执行文件叫Mach-o文件;
1.2、这个Mach-o文件相当于windows平台的exe文件,文件名一般与ipa文件同名;
1.3、脱壳是逆向工程中的专业术语,所谓逆向工程[……]

继续阅读

执行shell语句的三种常用方式

1、我们在终端中经常需要输入一些常用的指令,有时候还是重复同样的操作,每次都敲一遍,麻烦又浪费时间,没有意义;
2、要解决这个问题,可以编写一些简单的shell脚本保存到一个.sh的文件中
3、我想说的是执行shell脚本有三种常用的方式:
3.1、sh xxx.sh
这种方式执行结束后,当[……]

继续阅读

C++中if…else…与for(…)在汇编中的实现

1、编写两个简单的条件语句来反汇编一下看最终机器是如何工作的,以下示例是在XCode中反汇编的,即AT&T汇编,8086或win32也是相同的原理
1.1、if…else…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main(){
    int a = 0;
    int b = 0;
    if (a > 0){
        b = 1;
    }else{
        b = 2;
    }
    return 0;
}</cmath></iostream>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cplus`main:
    0x100000f70 <+0>:  pushq  %rbp
    0x100000f71 <+1>:  movq   %rsp, %rbp
    0x100000f74 <+4>:  movl   $0x0, -0x4(%rbp)
    0x100000f7b <+11>: movl   $0x0, -0x8(%rbp);int a
    0x100000f82 <+18>: movl   $0x0, -0xc(%rbp);int b
 
    ;if...else...开始
    ;1、小于或等于则跳转到3【0x100000f9f】
    0x100000f89 <+25>: cmpl   $0x0, -0x8(%rbp)
    0x100000f8d <+29>: jle    0x100000f9f
 
    ;2.1、符合条件则执行if条件下的代码
    0x100000f93 <+35>: movl   $0x1, -0xc(%rbp);b=1
    ;2.2、执行结束后直接跳转到结尾
    0x100000f9a <+42>: jmp    0x100000fa6
 
    ;3、else条件下的代码
    0x100000f9f <+47>: movl   $0x2, -0xc(%rbp);b=2
    ;if...else...结束
 
    0x100000fa6 <+54>: xorl   %eax, %eax
    0x100000fa8 <+56>: popq   %rbp
    0x100000fa9 <+57>: retq

1.2、for(…;…;…)[……]

继续阅读