Skip to content

Commit

Permalink
change built-in mode to default mode
Browse files Browse the repository at this point in the history
  • Loading branch information
dora2-iOS committed Apr 6, 2022
1 parent db9bdae commit 0b9931c
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 57 deletions.
64 changes: 30 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,36 +22,29 @@ checkra1n dump and poc for iOS


### ホスト側のデバイス (このソフトウェアを実行する側)
- iPhone 5s (iOS 12.5.1)
- iOS 12+
- 動作確認済 (lightning to USB camera adapter 経由)

- iPhone 8 (iOS 13.5)
- 動作確認済 (lightning to USB camera adapter 経由)

- iPhone 5 (iOS 9.x, 10.x)
- 動作確認済 (lightning to USB camera adapter + 電源供給)

- iPhone 5s (iOS 9.1, 9.3.3)
- iOS 9+
- 動作確認済 (lightning to USB camera adapter + 電源供給)


## ビルド
### 通常
### Built-Inモード
```
cd src/
make all
cd ../pongoOS/scripts
make ra1npoc
```

### Built-In ビルド
### 旧モード
```
cd src/
./builtin.sh
make all "CFLAGS+=-DBUILTIN_PAYLOAD"
cd ../pongoOS/scripts
make ra1npoc
make old
```

*iPhoneOS向けにビルドする場合、IOKitなどの一部ヘッダーはmacOSのものからコピーする必要があります*
*iPhoneOS向けにビルドするために、IOKitなどの一部ヘッダーをmacOSからiPhoneOSのSDKにコピーする必要があります*


## 定義
Expand All @@ -61,9 +54,30 @@ make ra1npoc
`BUILTIN_PAYLOAD`
- Payloadをbuilt-inします。


## 実行
- iOS 14環境で実行する場合、バイナリは`/usr/local/bin`以下に配置する必要があります。

### built-in
```
ra1npoc [option]
-h, --help show usage
-l, --list show list of supported devices
-v, --verbose enable verbose boot
-c, --cleandfu use cleandfu [BETA]
-d, --debug enable debug log
-e, --extra-bootargs <args> set extra bootargs
```

### built-in (A9X)
A9Xの場合、ra1npocを実行したあとpongoOSで停止する仕様となっています。
iPadOSを起動したい場合、続けてpongotermを使用してブートファイルを送信する必要があります。
```
pongoterm -r
```


### 旧モードの場合
### A7/A10-A11
```
ra1npoc [--{chipname}] [{Soc}_overwrite1 {Soc}_overwrite2 {Soc}_stage2 pongoOS]
Expand All @@ -82,30 +96,11 @@ pongoterm
> bootx
```


### A8/A9
```
ra1npoc [--{chipname}] [/dev/null {Soc}_overwrite2 {Soc}_stage2 pongoOS]
```

### built-in
```
ra1npoc [option]
-h, --help show usage
-l, --list show list of supported devices
-v, --verbose enable verbose boot
-c, --cleandfu use cleandfu [BETA]
-d, --debug enable debug log
-e, --extra-bootargs <args> set extra bootargs
```

### built-in (A9X)
A9Xの場合、ra1npocを実行したあとpongoOSで停止する仕様となっています。
iPadOSを起動したい場合、続けてpongotermを使用してブートファイルを送信する必要があります。
```
pongoterm -r
```


## iOS/iPadOSで利用する際の注意点
- 対象デバイスをlightning to USB camera adapter経由で脱獄するデバイス (このソフトウェアを実行する側) に接続する際、電源供給が足りず、対象デバイスをDFU/Recovery Modeに出来ない可能性があります。
Expand All @@ -116,6 +111,7 @@ pongoterm -r
- 影響のあるデバイス (このソフトウェアを実行する側): `iOS 10以下のiOSデバイス`
- 解決策: USBハブに電源供給を行い、バスパワーではなくセルフパワーで接続する。


## Credit
checkra1n team: checkra1n
axi0mX: checkm8 exploit
Expand Down
55 changes: 34 additions & 21 deletions src/Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,23 @@
IGCC = xcrun -sdk iphoneos gcc
MGCC = xcrun -sdk macosx gcc
MGCC_FLAGS = -I./include -framework IOKit -framework CoreFoundation -Os -Wall $(CFLAGS)
IGCC_FLAGS = $(MGCC_FLAGS) -DIPHONEOS_ARM
AARCH32 = -arch armv7
AARCH64 = -arch arm64

IPHONEOS_CC = xcrun -sdk iphoneos gcc
MACOSX_CC = xcrun -sdk macosx gcc

CFLAGS = -I./include -Wall
CFLAGS += -Os
IPHONEOS_FLAGS = -DIPHONEOS_ARM
BUILTIN_FLAGS = -DBUILTIN_PAYLOAD

LDFLAGS = -framework IOKit -framework CoreFoundation

IPHONEOS_ARCH = -arch armv7 -arch arm64

MACOSX_OBJECT = ra1npoc_macosx
IPHONEOS_OBJECT = ra1npoc_iphoneos

CODESIGN = ldid -S
STRIP = strip

PD_GENERATOR = builtin.sh

SOURCE = \
main.c \
Expand All @@ -13,24 +27,23 @@ SOURCE = \
soc/t7000_s8000.c \
soc/s5l8960x.c

MOBJECT = ra1npoc_macosx
IOBJECT = ra1npoc_iphoneos
IOBJECT32 = ra1npoc_iphoneos32
IOBJECT64 = ra1npoc_iphoneos64
ICODESIGN = ldid -S

PayloadDir = payload/

.PHONY: all macosx iphoneos clean
.PHONY: all builtin old clean

all: macosx iphoneos
all: builtin

macosx:
$(MGCC) $(MGCC_FLAGS) $(SOURCE) -o $(MOBJECT)
builtin:
./$(PD_GENERATOR)
$(MACOSX_CC) $(CFLAGS) $(BUILTIN_FLAGS) $(LDFLAGS) $(SOURCE) -o $(MACOSX_OBJECT)
$(IPHONEOS_CC) $(CFLAGS) $(IPHONEOS_FLAGS) $(BUILTIN_FLAGS) $(LDFLAGS) $(SOURCE) $(IPHONEOS_ARCH) -o $(IPHONEOS_OBJECT)
$(STRIP) $(IPHONEOS_OBJECT)
$(CODESIGN) $(IPHONEOS_OBJECT)

iphoneos:
$(IGCC) $(IGCC_FLAGS) $(SOURCE) $(AARCH32) $(AARCH64) -o $(IOBJECT)
$(ICODESIGN) $(IOBJECT)
old:
$(MACOSX_CC) $(CFLAGS) $(LDFLAGS) $(SOURCE) -o $(MACOSX_OBJECT)
$(IPHONEOS_CC) $(CFLAGS) $(IPHONEOS_FLAGS) $(LDFLAGS) $(SOURCE) $(IPHONEOS_ARCH) -o $(IPHONEOS_OBJECT)
$(STRIP) $(IPHONEOS_OBJECT)
$(CODESIGN) $(IPHONEOS_OBJECT)

clean:
-$(RM) $(MOBJECT) $(IOBJECT32) $(IOBJECT64) $(IOBJECT)
-$(RM) $(MACOSX_OBJECT) $(IPHONEOS_OBJECT)
2 changes: 2 additions & 0 deletions src/common/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ static void prog(int sec)
int i=0;
int j=0;

cpuTime = clock();

for(i=0; i<sec; i++) {
printf("[");
for (j=0;j<i+1;j++)
Expand Down
4 changes: 2 additions & 2 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,15 +313,15 @@ int main(int argc, char** argv)
return -1;
}
}

#endif /* BUILTIN_PAYLOAD */

if(useRecovery) {
if(enter_dfu_via_recovery(client) != 0) {
return -1;
}
}

#endif /* BUILTIN_PAYLOAD */

LOG("[%s] Waiting for device in DFU mode...", __FUNCTION__);
while(get_device(DEVICE_DFU, true) != 0) {
sleep(1);
Expand Down

0 comments on commit 0b9931c

Please sign in to comment.