TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks" if [ -d"$TARGET_APP_FRAMEWORKS_PATH" ]; then for FRAMEWORK in"$TARGET_APP_FRAMEWORKS_PATH/"* do
/usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY""$FRAMEWORK" done fi
ASLR (Address Space Layout Randomization),即地址空间随机布局,动态分配,程序运行才有,是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一种技术
int var4 = wo;
int var8 = w1;
printf("test") // 获取常量test
int global = x30; // 全能局变量
int w1 = var4;
int w8 = var8;
int w8 = w1 + w8;
int w1 = x30;
int w8 = w8 + w1;
int varc = wo;
return x8
B.GE 标号:比较结果是大于等于(greater than or equal to),执行标号,否则不跳转
B.EQ 标号:比较结果是等于,执行标号,否则不跳转
B.HI 标号:比较结果是无符号大于,执行标号,否则不跳转
if语句
int global = 16;
void function(int a, int b) {
if (a > global) {
global = a;
} else {
global = b;
}
}
int main(int argc, char * argv[]) {
function(10, 20);
}
循环
do while循环
int sum = 0;
int i = 0;
do {
sum += i;
} while (i < 100);
while循环
int sum = 0;
int i = 0;
while (i < 100) {
sum += i;
}
for循环
for (int i = 0; i < 100; i++) {
printf("hello world");
}
voidfunc(int a){ switch (a) { case1: printf("this is one"); break; case2: printf("this is two"); break; case3: printf("this is three"); break; default: printf("this is else"); break; } }
intmain(int argc, char * argv[]){ func(2); }
void func (int a) {
switch (a) {
case 1:
printf("this is one");
break;
case 2:
printf("this is two");
break;
case 3:
printf("this is three");
break;
case 4:
printf("this is four");
break;
case 5:
printf("this is five");
break;
default:
printf("this is else");
break;
}
}
int main(int argc, char * argv[]) {
func(6);
}
int main(int argc, char * argv[]) {
int a = 10;
int b = 20;
int c = a + b;
NSLog(@"%d",c);
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
int sum(int a,int b) {
return a + b;
}
int main(int argc, char * argv[]) {
sum(16, 32);
}
int sum(int a,int b,int c,int d, int e, int f, int g,int h,int i,int j) {
return a + b + c + d + e + f + g + h + i + j;
}
int main(int argc, char * argv[]) {
sum(16, 16 * 2, 16 * 3, 16 * 4, 16 * 5, 16 * 6, 16 * 7, 16 * 8, 16 * 9,16 * 10);
}
ARM64下部分常用汇编指令
MOV X1,X0 ;将寄存器X0的值传送到寄存器X1
ADD X0,X1,X2 ;寄存器X1和X2的值相加后传送到X0
SUB X0,X1,X2 ;寄存器X1和X2的值相减后传送到X0
AND X0,X0,#0xF ; X0的值与0xF相位与后的值传送到X0
ORR X0,X0,#0x9 ; X0的值与9逻辑或后的值传送到X0
EOR X0,X0,#0xF ; X0的值与0xF相异或后的值传送到X0
LDR X5,[X6,#0x08] ;X6寄存器加0x08的和的地址值内的数据传送到X5
STR X0, [SP, #0x8] ;X0寄存器的数据传送到SP+0x8地址值指向的存储空间
STP x29, x30, [sp, #0x10] ;入栈指令
LDP x29, x30, [sp, #0x10] ;出栈指令
CBZ;比较(Compare),如果结果为零(Zero)就转移(只能跳到后面的指令)
CBNZ;比较,如果结果非零(Non Zero)就转移(只能跳到后面的指令)
CMP;比较指令,相当于SUBS,影响程序状态寄存器
CPSR B/BL ;绝对跳转#imm, 返回地址保存到LR(X30)
RET;子程序返回指令,返回地址默认保存在LR(X30)
状态寄存器(标记寄存器)
CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理器,个数和结构都可能不同).这种寄存器在ARM中,被称为状态寄存器就是CPSR(current program status register)寄存器
on alfred_script(q) if application "iTerm2" is running or application "iTerm" is running then run script " onrun {q} tell application \":Applications:iTerm.app\" activate try select first window set onlywindow to false onerror create window with default profile select first window set onlywindow to true end try tell current session of the first window if onlywindow is false then tell split vertically with default profile write text q end tell end if end tell end tell end run " with parameters {q} else run script " onrun {q} tell application \":Applications:iTerm.app\" activate try select first window onerror create window with default profile select first window end try tell the first window tell current session to write text q end tell end tell end run " with parameters {q} end if end alfred_script
如果使用的是iTerm2和on my zsh组合,又没有设置兼容bash,则需要在.zshrc文件下配置
3.在终端或iTerm2输入cycript验证是否配置成功
使用commond+D退出,我在公司的电脑上验证通过,但是在自己的电脑上却报错
1 2 3
dyld:Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib Referencedfrom: /Users/devzkn/Downloads/cycript_0.9.594/Cycript.lib/cycript-apl Reason: image not found
这个错误是因为ruby版本太高导致
解决方法:
查看电脑ruby版本,我的版本是2.3
cd /System/Library/Frameworks/Ruby.framework/Versions/
ls
关闭系统的SIP
在 OS X El Capitan 中有一个跟安全相关的模式叫 SIP(System Integrity Protection ),它禁止让软件以 root 身份来在 Mac 上运行,在升级到 OS X 10.11 中或许你就会看到部分应用程序被禁用了,这些或许是你通过终端或者第三方软件源安装。对于大多数用户来说,这种安全设置很方便,但是也有些开发者或者高级 Mac 用户不需要这样的设置