自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 frida破解aes对称加密算法

CCCrypt在iOS的对称加密算法中,常用的是aes,对应的是C函数 CCCrypt函数。CCCryptorStatus CCCrypt( CCOperation op, /* kCCEncrypt, etc. */ CCAlgorithm alg, /* kCCAlgorithmAES128, etc. */ CCOptions options, /* kCCOptionPKCS7Padding, etc. */ const v

2021-07-15 17:22:56 1003

原创 frida获取请求头中某个字段设置位置

本篇文章是阐述如何通过frida获取请求头中某个字段设置位置.在iOS的网络请求中,设置请求头信息经常会用到-[NSMutableURLRequest setValue:forHTTPHeaderField:], 所以可以通过追踪此函数, 打印堆栈信息, 从而快速定位到网络请求发送的位置。先打开应用, 然后在终端执行下面命令:frida -U -m “-[NSMutableURLRequest setValue:forHTTPHeaderField:]” 应用名称在handlers文件夹中修

2022-03-31 13:10:22 515

原创 frida定位网络请求位置

本篇文章是阐述如何通过frida来定位网络请求发送位置.在iOS的网络请求中,发送网络请求经常会用到 [NSURL URLWithString:@“xxx”], 所以可以通过追踪此函数, 打印堆栈信息, 从而快速定位到网络请求发送的位置。先打开应用, 然后在终端执行下面命令:frida -U -m “+[NSURL URLWithString:]” 应用名称在handlers文件夹中修改 URLWithString_.js 内容, 然后重新执行上面的命令.{ onEnter(log, ar

2022-03-31 11:37:27 947

原创 frida替换函数实现mac端微信防撤回

在逆向过程中, 我们经常有这样的需求:hook某个目标函数, 将它的实现过程给屏蔽掉, 以达到想要的效果.frida中提供了Interceptor.replace()来实现此功能.例如, 我们想在mac上实现微信3.0消息防撤回的功能, 已经判断出撤回消息调用的方法是 -[FFProcessReqsvrZZ FFToNameFavChatZZ:sessionMsgList:] , 那我们只要把这个方法实现屏蔽掉就能达到防撤回的效果, 接下来, 我们用frida实现.通过lldb对微信调试后发现, m

2022-01-08 17:59:41 1786

转载 iOS加固保护原理

我们可以从以下几个方面来保护我们的APP:1.字符串混淆对应用程序中使用到的字符串进行加密,保证源码被逆向后不能看出字符串的直观含义。2.类名、方法名混淆对应用程序的方法名和方法体进行混淆,保证源码被逆向后很难明白它的真正功能。3.程序结构混淆加密对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低。4.反调试、反注入等一些主动保护策略这是一些主动保护策略,增大破解者调试、分析APP的门槛。3.1字符串加密字符串会暴露APP的很多关键信息,攻击者可以根据界面显示的字符串,快速找到相关逻辑

2022-01-08 10:06:29 433

原创 frida安装

一. 安装fridapip install frida这个时候frida的大多命令还是不能用的,需要安装frida-tools二. 安装frida-tools安装后使用命令 frida --version 查看安装的frida版本.frida-tools要与当前安装的frida相对应才可以. 比如我用的是14.2.6, 在frida的github网址查看 frida14.2.6 需要对应的frida-tools版本.展开Assets, 里面包含对应的frida-gadget, frida-s

2021-12-13 11:30:06 1268

原创 python实现http请求

一、python2发送get请求# -*- coding: utf-8 -*-import urllib2url = "http://localhost:80/webtest/test?name=xuejianbest"req = urllib2.Request(url)response = urllib2.urlopen(req)page_html = response.rea...

2021-12-03 10:30:11 7704

原创 scp指令

将iPhone上的文件拷贝至mac上:通过wifi连接:scp -r root@[iphone的IP]:[要拷贝的iphone文件路径] [Mac路径]scp -r [email protected]:/var/containers/Bundle/Application/D8E9E36C-4133-45FA-A190-C3FADDD5DADC /Users/mg/Desktop/Thir...

2021-11-24 18:27:00 1721

原创 Theos安装

克隆到本地git clone --recursive git://github.com/theos/theos.git $THEOS由于克隆theos时它所需要的依赖也会下载下来,这一步不科学上网的话也容易出现网络错误,而且无论怎么重试可能都下载不下来。这个时候我们可以进入theos/vendor目录手动clone下来。cd $THEOS/vendor git clone git://...

2021-10-27 09:46:20 322

原创 破解iOS微信骰子和猜拳

请移步本人的看雪论坛https://bbs.pediy.com/thread-265106.htm

2021-09-18 20:14:58 578

原创 openssl RSA基本加密解密

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <openssl/bn.h>#include <openssl/rsa.h>#include <openssl/pem.h> int main(int argc, char *argv[]){ // 产生RSA密钥对 RSA *rsaKey = RSA_generate_key(102

2021-07-26 10:54:46 87

原创 frida的基本命令

frida-ps -Ua打印usb连接设备正在运行的进程(进程ID,进程名,包名)frida-ps -Uai打印usb连接设备上所有的进程(进程ID,进程名,包名)frida加载js脚本frida -U -l **.js 进程名或进程ID或包名frida -U -l **.js -f 进程名或进程ID或包名 --no-pause重启进程并注入脚本frida杀死进程frida-kill 进程名或进程ID或包名...

2021-07-15 16:13:33 6157

原创 frida 根据函数地址Hook

本文针对某版本的WeChat作例:js文件hookAddress.js//获取MaChO的aslrfunction get_rva(module, offset) { var base_addr = Module.findBaseAddress(module); if (base_addr == null) base_addr = enum_to_find_module(module); console.log(module + ':' + base_addr

2021-07-06 21:50:47 704

原创 注入与删除动态库

一 使用optool注入动态库optool install -p "@executable_path/xx.dylib" -t xx.app/xx签名动态库security find-identity -v -p codesigning //查看可用签名codesign -fs 证书串 xx.dylib //签名动态库将签名后的dylib拷贝到.app包中去...

2021-06-21 13:36:52 441

原创 签名相关

Xcode的codesign签名工具codesign指令可识别.app和machO,不能识别ipa查看签名完整性:codesign --verify wx.app查看签名信息codesign -vv -d xx.dylib给dylib签名查看可用签名security find-identity -v -p codesigning给dylib签名codesign -...

2021-06-21 13:36:26 55

原创 lldb添加命令

编写LLDB脚本先在 /Volumes/WIN/Python 这个目录下新建一个HelloWorld.py的文件,文件内容如下:# -*- coding:utf-8 -*-# debugger 是当前调试器对象,类型是lldb.SDBDebugger# command 是命令的参数,类型是字符串# reulit 是执行命令后返回的参数,类型是lldb.SBCommandRetur...

2021-01-27 10:12:09 149

原创 iproxy问题

iproxy做端口映射时遇到的问题iproxy 1234 1234dyld: Library not loaded: /usr/local/opt/libusbmuxd/lib/libplist.3.dylib Referenced from: /usr/local/bin/iproxy Reason: image not found去/usr/local/opt/libpl...

2021-01-25 18:55:54 914

原创 iOS安全文章

iOS APP安全保护iOS安全检测:是否越狱、动态库注入、重签名iOS静态分析:Infer的使用iOS静态分析:OCLint的使用iOS静态分析:Analyze的使用iOS InjectionIII工具的使用及重载原理提高编译效率iOS通过OTA安装ipa包外部人员方便快捷的安装ipa包...

2021-01-20 15:17:37 78

原创 重签名后注入动态库

本文主要是基于之前的文章《iOS逆向03》app重签名,向重签名后的app中注入动态库。创建动态库添加动态库接下来创建一个Cocoa Touch Framework,将动态库命名为InjectCode,并在动态库中创建一个类,在类的 +load 方法中输出一段语句,来验证动态库是否加载到app中。Xcode运行工程后,动态库InjectCode.frameworkapp会被复...

2021-01-16 17:36:57 163

原创 mac上将c语言文件编译成arm64架构文件

本文编译的文件cpu架构为arm64。预编译使用xcrun命令预编译c文件。xcrun -sdk iphoneos clang -arch arm64 -E -o a.c main.m查看预编译后的a.c文件# 1 "main.m"# 1 "<built-in>" 1# 1 "<built-in>" 3# 388 "<built-in>" 3...

2021-01-12 09:45:09 611

原创 程序编译过程

本文编译的文件cpu架构为X86_64。编译型语言编译过程主要有预编译、编译、汇编、链接。预编译This stage parses the input file, translating preprocessor tokens into a parse tree. Once in the form of a parse tree, itapplies semantic ...

2021-01-11 10:51:23 642

原创 恢复作为参数的block

在逆向的过程中,经常会遇到参数为block的情况,这时候就要求我们能还原block的实现。还原block要做的有找出block的返回值,参数,指向的函数实现。比如一个函数 - [LAWVPluginInstanceController handleJavaScriptRequest:callback:],callback后面的参数即是block,那要怎么还原它呢?首先我们要通过lldb给这个方...

2021-01-11 08:47:48 61

原创 文件总结

.certSigningRequest文件Mac公钥.cer文件利用Apple私钥(CA),对Mac公钥生成了数字签名.mobileprovision利用Apple私钥,对【.cer证书+devices+appID+entitlements】进行数字签名证书用CA的私钥,对其他人的公钥生成数字签名...

2020-11-06 19:30:38 55

原创 逆向app的思路

1. 界面分析Cycript、Reveal2. 代码分析对Mach-O文件的静态分析MachOView、class-dump、Hopper Disassembler、ida等3. 动态调试对运行中的app进行代码调试debugserver、LLDB4. 代码编写注入代码到app中必要时还可能需要重新签名,打包ipa...

2020-11-06 19:30:17 89

原创 《iOS防护11》越狱检测

越狱检测的必要性在iOS的安全防护中,对手机越狱的检测是十分必要的。如果发现手机是越狱的,那我们要对我们的应用做一些防护措施,如在支付宝会关闭指纹支付,只能密码支付;微信会关闭人脸支付;某些app甚至会不允许在越狱手机上使用。越狱检测下面介绍如何通过环境变量 DYLD_INSERT_LIBRARIES 来进行越狱检测://通过环境变量进行越狱检测 char *dlname = g...

2020-11-04 10:04:42 408

原创 《iOS防护10》使用汇编调用系统函数

直接使用系统函数,最终都逃不掉被fishhook勾住的结局。那我们就用更低层的汇编代码吧。syscall(26, 31, 0, 0); 可以写成下面的汇编代码://下面的汇编代码相当于 syscall(26, 31, 0, 0);//volatile: 告诉编译器不要优化此段汇编代码asm volatile ( "mov x0, #26\n" //x0,x1,x2,x3寄存器放...

2020-11-04 08:39:07 352

原创 《iOS防护09》使用syscall绕过符号断点

syscall函数包含在头文件<sys/syscall.h>中。//函数原型int syscall(int, ...);调用:syscall(26, 31, 0, 0);第一个参数是要调用的函数的编号,之后的其他参数是调用的函数的参数。在syscall.h中可以查看:#ifndef _SYS_SYSCALL_H_#define _SYS_SYSCALL_H_#...

2020-11-03 11:33:23 232

原创 《iOS防护08》防护fishhook

fishhook的原理是修改符号绑定#import "ViewController.h"#import "PtraceHeader.h"#import <dlfcn.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super vie...

2020-11-03 10:22:11 114

原创 《iOS防护07》字符串加密

项目中经常要用到一些重要的字符串,本文主要介绍如何对对称加密中的salt(盐)进行加密。先拿个例子分析下:#import "ViewController.h"#import "EncryptionTools.h"@interface ViewController ()@end//盐,saltNSString *const AES_KEY = @"ABCDEF";@imple...

2020-11-02 21:20:29 140

原创 《iOS防护06》代码混淆

项目中一些关键的类名和方法名,我们可以通过混淆使类名和方法名变得无意义,以此来增加理解和逆向的难度。创建工程先创建一个名为 ManualConfusionDemo 的工程。新建一个 UserInfo 类UserInfo.m实现如下:#import "UserInfo.h"@implementation UserInfo- (BOOL)isVipWithAccount:(NSS...

2020-11-02 14:51:17 74

原创 《iOS防护05》防止破解ptrace防护和sysctl防护

之前文章中能利用fishhook去hook系统函数ptrace和sysctl进行破解防护,是因为fishhook代码在动态库framework中,在防护代码执行之前,所以会hook成功。通过这个原理,我们可以将ptrace防护代码和sysctl防护代码放在动态库中,使防护代码提前执行,以使之前的破解方法失效。...

2020-10-31 15:56:59 184

原创 《iOS防护04》破解sysctl防护

sysctl是系统函数,所以仍然使用fishhook。跟破解ptrace防护一样,创建动态库,在动态库中进行hook,关键代码如下:#import "SysctlInject.h"#import <sys/sysctl.h>#import "fishhook.h"@implementation SysctlInject//声明一个原系统函数的指针,保存原函数地址int...

2020-10-31 12:54:16 108

原创 《iOS防护03》sysctl防护

可以使用系统函数 sysctl 来检测进程的状态。int sysctl(int *, u_int, void *, size_t *, void *, size_t);ViewController.m#import "ViewController.h"#import <sys/sysctl.h>@interface ViewController ()@end@...

2020-10-30 13:29:26 188

原创 《iOS防护02》破解ptrace防护

本文接上一篇《iOS防护01》ptrace防护 ,实现破解ptrace防护。创建动态库因动态库的加载在main函数之前,所以通过动态库中编写代码实现hook。按照下图步骤创建动态库截屏2020-10-30上午10.48.33.png截屏2020-10-30上午10.52.25.png按照上图创建完后,targets会多出来一个动态库(我创建的动态库名称为In...

2020-10-30 11:07:43 219

原创 《iOS防护01》ptrace防护

获取ptrace.h头文件prace.h是系统的C语言文件。首先用Xcode创建一个命令行程序截屏2020-10-29下午5.33.45.png命令行程序的 mian.m 中导入 ptrace 头文件import <sys/ptrace.h>截屏2020-10-29下午5.38.06.png查看 ptrace.h 的定义,复制ptrace...

2020-10-29 18:02:52 289

原创 ADRP指令

截屏2020-10-26下午6.49.13.png每次看到adrp指令和add指令一起出现时,就代表着将会向某个寄存器中存储变量。内存地址 汇编指令0x102f571bc adrp x8, 2650x102f571c0 add x8, x8,#0xa30在Xcode中调试时,我们可以很轻松...

2020-10-26 19:13:49 653

原创 ios 关于支付宝添加桌面快捷方式的探究

前言最近公司产品有个需求,为我们app中每个H5应用实现添加桌面快捷方式的功能,与支付宝健康码添加到桌面一样。所以特地研究了下相关产品中该功能的实现方式,如哈罗单车和支付宝。原理在 app 里面通过 OpenURL 方式 跳转到Safari 浏览器,打开一个引导页面,然后点击添加到主屏幕,如下图:1241595556274_.pic.jpg哈罗单车的实现548341-...

2020-07-24 11:47:01 1417

原创 《iOS逆向03》app重签名

准备工作iPhone手机(越狱或非越狱均可)微信app脱壳后的ipa对ipa文件进行处理解压ipa文件将.ipa文件的后缀名修改为.zip, 然后解压得到Payload文件夹, Payload下是WeChat.app查看app包的签名信息:codesign -vv -d WeChat.app删除多余的文件列表第一项WeChat.app包内的Plugins文件夹和...

2020-07-09 11:33:12 135

原创 Masonry原理

Masonry使用首先我们写个简单的约束:01 - (void)viewDidLoad {02 [super viewDidLoad];03 04 UIView *firstView = [[UIView alloc] initWithFrame:CGRectZero];05 firstView.backgroundColor = [UIColor redColor];...

2020-06-29 19:03:05 251

原创 《iOS逆向01》远程登录到iPhone

iPhone越狱后,远程登录到iPhone的方式有2种。一. 通过OpenSSH的方式1. 在iPhone上通过Cydia安装OpenSSH工具(软件源http://apt.saurik.com) SSH是通过TCP协议通信,所以要确保Mac和iPhone在同一局域网下,比如连接同一个wifi. 注: [email protected],root是账户名;192.168....

2020-01-12 20:02:00 174

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除