-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelper.sh
142 lines (101 loc) · 4.32 KB
/
helper.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/usr/bin/env bash
version_above_4(){
# If it's set, check the version
if [[ "${BASH_VERSINFO:-0}" -lt 4 ]]; then
echo "Bash version >= 4 required"
exit 0
fi
}
build_nanomiter() {
echo "Starting building Nanomit3r in $1 mode..."
[[ "$1" == "DEBUG" ]] && CONF="Debug" || CONF="Release"
xcodebuild -target Nanomit3r -scheme Nanomit3r -derivedDataPath build -configuration $CONF build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
}
build_debuger() {
echo "Starting building NanoBreak in $1 mode..."
[[ "$1" == "DEBUG" ]] && CONF="Debug" || CONF="Release"
xcodebuild -target NanoBreak -scheme NanoBreak -derivedDataPath build_dylib -configuration $CONF build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
}
enter_working_dir() {
WORK_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
echo "Entering correct working directory: $WORK_DIR"
cd $WORK_DIR
}
only_run_main() {
WORK_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
WHICH_EXAMPLE="csr"
read -e -i "$WHICH_EXAMPLE" -p "Select example binary [inject_dylib | csr | jtool2 | disarm | ... ]: " WHICH_EXAMPLE
OUTPUT_BINARY="/tmp/${WHICH_EXAMPLE}_mod"
if [[ ! -f "$OUTPUT_BINARY" ]]; then
echo "$OUTPUT_BINARY does not exist"
exit 0
fi
chmod +x "$OUTPUT_BINARY"
WHICH_SCHEME="RELEASE"
read -e -i "$WHICH_SCHEME" -p "Which scheme do you want to use [RELEASE/DEBUG] for Nanobreak DYLIB: " WHICH_SCHEME
if [[ $WHICH_SCHEME == "RELEASE" ]]; then
WHICH_SCHEME="Release"
else
WHICH_SCHEME="Debug"
fi
if [[ ! -f "build_dylib/Build/Products/$WHICH_SCHEME/libNanoBreak.dylib" ]]; then
echo "Dylib does not exists"
exit 0
fi
SURE="y"
read -e -i "$SURE" -p "WARNING !!! You need to recompile DYLIB every time you change example binary or parametrs [y/n]: " SURE
if [[ $SURE != "y" ]]; then
echo "No agree. exit"
exit 0
fi
DYLD_INSERT_LIBRARIES=${WORK_DIR}/build_dylib/Build/Products/$WHICH_SCHEME/libNanoBreak.dylib "$OUTPUT_BINARY"
}
main() {
version_above_4
enter_working_dir
ONLY_RUN="y"
read -e -i "$ONLY_RUN" -p "You already BUILD all you need and want to just RUN examples ? [y/n]: " ONLY_RUN
if [[ $ONLY_RUN == "y" ]]; then
only_run_main
echo "Goodbay."
exit 0
fi
WANT_BUILD_NANO_REL="y"
WANT_BUILD_NANO_DGB="n"
read -e -i "$WANT_BUILD_NANO_REL" -p "Do you want build Nanomit3r (RELEASE) [y/n]: " WANT_BUILD_NANO_REL
read -e -i "$WANT_BUILD_NANO_DGB" -p "Do you want build Nanomit3r (DEBUG) [y/n]: " WANT_BUILD_NANO_DGB
echo "Building Nanomi3r RELEASE in 3 2 1."
[[ "$WANT_BUILD_NANO_REL" == "y" ]] && build_nanomiter RELEASE
echo "Building Nanomi3r DEBUG in 3 2 1."
[[ "$WANT_BUILD_NANO_DGB" == "y" ]] && build_nanomiter DEBUG
chmod +x "build/Build/Products/Release/Nanomit3r"
echo "All builds successed."
WHICH_SCHEME="RELEASE"
WHICH_EXAMPLE="csr"
read -e -i "$WHICH_SCHEME" -p "Which scheme do you want to use [RELEASE/DEBUG] for Nanomit3r: " WHICH_SCHEME
read -e -i "$WHICH_EXAMPLE" -p "Select example binary [inject_dylib | csr | jtool2 | disarm | ... ]: " WHICH_EXAMPLE
OUTPUT_BINARY="/tmp/${WHICH_EXAMPLE}_mod"
OUTPUT_JSON="/tmp/${WHICH_EXAMPLE}.json"
read -e -i "$OUTPUT_BINARY" -p "Select path for output modyfied binary file: " OUTPUT_BINARY
read -e -i "$OUTPUT_JSON" -p "Select path for output JSON data file: " OUTPUT_JSON
if [[ $WHICH_SCHEME == "RELEASE" ]]; then
echo "Executing Nanomit3r RELEASE."
build/Build/Products/Release/Nanomit3r -f Examples/"$WHICH_EXAMPLE" -s __text -g __TEXT -o "$OUTPUT_JSON" --output_binary "$OUTPUT_BINARY"
else
echo "Executing Nanomit3r DEBUG."
build/Build/Products/Debug/Nanomit3r -f Examples/"$WHICH_EXAMPLE" -s __text -g __TEXT -o "$OUTPUT_JSON" --output_binary "$OUTPUT_BINARY"
fi
echo "Move data file to NanoBreak Target..."
mv -f "$OUTPUT_JSON" "Nanobreak/ww.h"
echo "All seems good so far. Let's try to compile debuger."
WANT_BUILD_DBG_REL="y"
WANT_BUILD_DBG_DGB="y"
read -e -i "$WANT_BUILD_DBG_REL" -p "Do you want build DYLIB debuger (RELEASE) [y/n]: " WANT_BUILD_DBG_REL
read -e -i "$WANT_BUILD_DBG_DGB" -p "Do you want build DYLIB debuger (DEBUG) [y/n]: " WANT_BUILD_DBG_DGB
echo "Building NanoBreak RELEASE in 3 2 1."
[[ "$WANT_BUILD_DBG_REL" == "y" ]] && build_debuger RELEASE
echo "Building NanoBreak DEBUG in 3 2 1."
[[ "$WANT_BUILD_DBG_DGB" == "y" ]] && build_debuger DEBUG
echo "Incredible. That's it. "
}
main