- 博客(308)
- 收藏
- 关注
原创 iOS逆向----Mac m1芯片检测
由于Apple更新了m1芯片的Mac,导致iOS程序可以在Mac上直接运行,因此需要判断一下我们的App是不是跑在了移动设备上。因为m1芯片的Mac上只能运行iOS14及以上系统(当然未来说不定有大能会移植低版本iOS系统到Mac上),因此我们只需要判断iOS14之后的系统即可:var isMac = falseif #available(iOS 14.0, *) { isMac = ProcessInfo.processInfo.isiOSAppOnMac}print("\(isMac
2021-01-04 11:16:36
105
原创 iOS----获取系统启动时间和App安装(更新)时间
2020年发生了很多事情,是多灾多难的一年想了一下,今年的最后一篇博客还是写给iOS吧,毕竟是我开始工作赚钱学会的第一份技能2020年的最后一天,跟时间有关,所以写一篇关于时间的博客提醒一下自己,第一批90后已经30岁了。。。获取系统的启动时间,原理很简单,就是获取kernel_task的启动时间,kernel_task大家都知道,系统主进程,系统挂了他也挂,系统起了他也起,所以获取kernel_task的启动时间就相当于获取到了系统的启动时间。#include <sys/sysctl.h&g
2020-12-31 15:20:28
44
原创 Mac IDA Pro7.0安装keypatch
什么是keypatchkeypatch 可以在IDA中直接修改二进制代码的插件, 项目地址安装由于我用的IDA是2017年泄露的7.0版本,因此使用的是Python2,那么首先使用pip2安装keystone-engine> sudo pip install keystone-enginePassword:DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your
2020-12-09 14:03:32
57
2
原创 iOS逆向----获取手机安装的所有App列表及路径
其实就是iOS11之前获取App列表的代码,只不过iOS11及之后的版本在非越狱手机上无法使用这个API获取了,但是越狱手机不受限制,依然可以用。+ (void)installedApplications { Class lsawsc = objc_getClass("LSApplicationWorkspace"); NSObject* workspace = [lsawsc performSelector:NSSelectorFromString(@"defaultWorkspace"
2020-12-09 10:17:25
76
原创 iOS安全----ptrace反调试
常规的ptrace反调试都已经烂大街了,这里来个新思路,使用函数指针调用:#import <dlfcn.h>int (*ptrace_p)(int _request, pid_t pid, caddr_t _addr, int _data);void ptrace() { void * handle = dlopen("usr/lib/system/libsystem_kernel.dylib", RTLD_LAZY); ptrace_p = dlsym(handle,
2020-10-21 13:47:36
123
1
原创 iOS逆向----增删改查plist文件
plist 是 Mac 种非常普遍的一种文件格式,类似 xml,通过键值对的方式来进行一些配置。PlistBuddy 则是 Mac 自带的专门解析 plist 的工具。由于Macos并未在环境变量中默认配置PlistBuddy,所以需要通过绝对路径来引用(当然你也可以自己配置一下环境变量):~ ❯ /usr/libexec/PlistBuddy --helpCommand Format: Help - Prints this information Exit - Exits th.
2020-09-29 14:33:57
153
原创 inline hook之fishhook objc_msgSend
常见的Hook方案基于 Objective-C Runtime 的 Method Swizzling:也就是我们经常使用的 class_replaceMethod 方法;基于 fishhook 的 Hook:由于在 Mach-O 当中,有 Bind 和 Lazy Bind 的两个概念,所以 Facebook 通过修改 __la_symbol 和 __nl_symbol 两个表的指针,在二次调用的时候,直接通过 __la_symbol_ptr 找到函数地址直接调用,从而不用多次繁琐的进行函数寻址;基于
2020-09-17 17:00:02
331
原创 iOS逆向----使用Safari调试手机WebView
首先在Mac上打开Safari的开发菜单:然后打开手机上的 设置 -> Safari 浏览器 -> 高级 -> Web检查器:之后就可以在Safari的开发菜单里看到设备上WebView显示的网页了:包括网页上的所有请求:...
2020-09-17 16:52:19
118
原创 lldb----打印出类中所有函数的入口地址
最近一直在研究破解相关问题,发现Objective-C中存在函数_shortMethodDescription,该函数可以打印出该类下所有函数的地址,这个地址是已经偏移之后的真实地址,免去了自己去IDA里面翻地址还要自己算的麻烦,效果相当于class-dump加内存地址,而且还有继承关系。(lldb) po [XMHDeviceTypeSelectViewController _shortMethodDescription]<XMHDeviceTypeSelectViewController: 0
2020-09-17 14:28:16
165
原创 inline hook 之 ARM64 汇编基础
iOS 内存分区及栈区栈区是存放临时变量、记录函数调用的区域。函数因为有了栈,所以才会具有递归的特点。向低地址增长的特性iOS 内存的栈空间是向低地址生长的,在图示中靠下的位置是栈顶,靠上方的位置是栈底:字节序、端序、尾序计算机硬件有两种储存数据的方式,分别为大端(big endian)和小端(little endian),当然还有混合的,在这里我们先不研究。举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。大端字节序:高位字节在前,低位字节在后,这是
2020-09-14 09:37:40
1659
原创 drozer提示[Errno 2] No such file or directory
之前一直正常使用,某一天升级系统之后发现drozer执行不起来了:❯ drozer console connect Selecting 6d5a8e18aea1aed6 (Net
2020-09-11 14:05:27
207
原创 Swift5 Method Swizzling 方法交换
最近看了一下关于Swift5的特性,发现了一个叫 @_dynamicReplacement(for:) 的新特性比较有趣,所以研究了一下。新建一个Swift 5.0的工程,不能用playground!然后输入以下代码,这里有一个key word叫dynamic,这个关键字在Swift3中就出现了,代表动态派发,只有加了dynamic修饰的方法才能被@_dynamicReplacement(fo...
2020-09-10 10:12:01
2263
2
原创 from cherrypy import wsgiserver -> ImportError: cannot import name wsgiserver
try: from cheroot.wsgi import Server as WSGIServer from cheroot.ssl.builtin import BuiltinSSLAdapterexcept ImportError: from cherrypy.wsgiserver import CherryPyWSGIServer as WSGIServer from cherrypy.wsgiserver.ssl_builtin import BuiltinSSL
2020-08-27 11:06:07
231
原创 iOS防护----获取Mach-O文件的UUID
代码不复杂,原理是动态解析自身内存里面的macho文件,根据macho文件格式找到LC_UUID然后就能得到uuid的值:#include <mach-o/dyld.h>static const char* uuidBytesToString(const uint8_t* uuidBytes) { CFUUIDRef uuidRef = CFUUIDCreateFromUUIDBytes(NULL, *((CFUUIDBytes*)uuidBytes)); NSString
2020-07-17 18:24:36
516
2
原创 iOS防护----获取Mach-O代码段位置以及大小
代码不复杂,原理是动态解析自身内存里面的macho文件,根据macho文件格式找到代码段LC_SEGMENT_64(_TEXT)然后就能得到__text的开始位置以及大小:#include <mach-o/dyld.h>#include <stdio.h>#include <stdlib.h>#include <dlfcn.h>#include <string.h>struct segmentRange{ unsigned
2020-07-17 17:58:39
598
原创 iOS逆向----最简单的脱壳方式CrackerXI
在 Cydia 中添加软件源 http://apt.wxhbts.com/搜索CrackerXI(CrackerXI App脱壳工具),下载安装。回到SpringBoard,打开CrackerXI在它的Setting里面打开CrackerXI Hook:回到AppList,选一个App,砸它:查看砸好之后ipa路径:使用scp拷贝到电脑上:➜ Desktop scp -P 2222 root@127.0.0.1:"/var/mobile/Document..
2020-07-16 16:15:20
1177
原创 iOS逆向----从相册拷贝照片
> cd /private/var/mobile/Media/DCIM/100APPLE> lsIMG_0003.JPG IMG_0004.JPG IMG_0005.JPG IMG_0006.JPG IMG_0007.PNG IMG_0009.PNG IMG_0011.PNGIMG_0003.MOV IMG_0004.MOV IMG_0005.MOV IMG_0006.MOV IMG_0008.PNG IMG_0010.PNG另开一个终端,使用scp命令拷贝到电
2020-07-16 16:09:39
453
原创 iOS逆向----iOS12之后的静态砸壳
关于静态砸壳其实之前已经介绍过一个工具Clutch,但是由于年久失修,导致其在iOS11之后变得不可用,动不动就kill -9。于是最近又开始研究了一下,发现了一款新的静态砸壳工具flexdecrypt首先连接到越狱的iPhone上,然后使用wget命令下载最新的deb(wget自行安装):iPhone:/tmp root# wget https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb然后直接
2020-07-16 15:29:17
719
原创 iOS防护----关键函数地址校验
使用dladdr方法可以获得一个函数所在的模块.从而判断该函数是否被替换掉。#include <dlfcn.h>#include <objc/objc.h>#include <objc/runtime.h>#include <stdio.h>#include <string.h>+ (void)test { Dl_info info; IMP imp; Method orginalMethod = class_get
2020-07-15 15:26:38
497
原创 Windows dll劫持
一. 准备工作1. 测试环境虚拟环境搭建:VMware Workstation 15 pro网络模式:桥接模式攻击机:kali Linux 2019.1 IP:192.168.43.143靶机:Windows 7 ultimate sp1 x64 IP:192.168.43.109微信版本:2.6.82. 使用工具the-backdoor-factory(BDF):用于DLL注入Process Explorer:用于查找DLL文件Metasploit二. 复现过程1.DLL注入1.
2020-07-11 17:57:04
552
原创 一劳永逸,再也不用担心brew install Updating Homebrew
方法1禁用掉每次安装前的更新!vim ~/.zshrc # 在最后一行输入:export HOMEBREW_NO_AUTO_UPDATE=true# 结束编辑source ~/.zshrc需要更新包了,可以执行:brew update && brew upgrade && brew cleanup ; say mission completebrew update && brew upgrade brew-cask &&
2020-07-08 15:47:16
451
原创 iOS----检测项目中是否包含UIWebView
自从2020开始,每次上传包,都会有ITMS-90809: Deprecated API Usage UIWebView,所以需要自己检查一下项目中是否包含了WebView:1.打开终端,cd + 把项目的工程文件所在文件夹拖入终端(即 得到项目的工程文件所在的路径)2.输入以下命令(注意最后有个点号,而且点号和 UIWebView 之间必须有一个空格):➜ grep -r UIWebView .Binary file ./Assets/Frameworks/RevealServer.framewo
2020-07-07 10:38:29
957
原创 Android设备指纹大全
名称接口参数名称备注示例序列号getDeviceId序列号IMEI865872025238821andrlid_idgetStringandroid_idbcbc00f09479aa5b手机号码getLine1Number手机号码13117511178手机卡序列号getSimSerialNumber手机卡序列号89860179328595900000IMSIgetSubscriberIdIMSI460017932859596...
2020-07-03 16:01:31
1391
原创 命令行管道符详解
Command pipe character is a very useful thing, especially when command injection, you will fall in love with it
2020-06-07 20:52:52
1176
原创 Windows认证协议
Windows有两种认证协议:NTLM(NT LAN Manager)和Kerberos。域成员计算机在登录的时候可以选择登录到域中或此台电脑,选择登录到域一般会采用Kerberos协议在域控DC上进行认证。NTLM认证协议NTLM是一种网络认证协议,它是基于挑战(Chalenge)/响应(Response)认证机制的一种认证模式。这个协议只支持Windows,NTLM认证协议大概流程:可以看到NTLM协议基于NTLM hash,Windows本地登录的密码由LM hash和NTLM hash组
2020-06-03 11:18:44
663
原创 Linux常用下载工具--curl
常规访问curl http://www.myh0st.cn文件名正则curl ftp://ftp.myh0st.cn/file[1-100].txt curl ftp://ftp.myh0st.cn/file[1-100:10].txt curl ftp://ftp.myh0st.cn/file[001-100].txt curl ftp://ftp.myh0st.cn/file[a-z].txt curl ftp://ftp.myh0st.cn/file[a-z:2].txt
2020-05-28 15:53:04
556
原创 Linux常用下载工具--wget
普通下载wget http://example.com/file.iso指定保存文件名wget ‐‐output-document=myname.iso http://example.com/file.iso保存到指定目录wget ‐‐directory-prefix=folder/subfolder http://example.com/file.iso大文件断点续传wget ‐‐continue http://example.com/big.file.iso下载最新版本wget
2020-05-28 12:22:04
469
转载 iOS 设置代理(Proxy)方案总结
在打开某个网址时设置 HTTP 代理,iOS目前有三种方案可以实现:使用 URLProtocol使用 WKWebURLSchemeHandler使用NetworkExtension其中第三种可以不用考虑了,作为一名中国开发者,你根本申请不到证书。。那么我们就看一下前两种:URLProtocol我们先了解一下他是个啥:NSURLProtocol是 iOS里面的URL Loadin...
2020-05-06 11:29:46
1431
原创 Mac开发----让请求走代理(URLSessionConfiguration Proxy)
话不多说,直接上代码://设置HTTP代理let sessionConfiguration: URLSessionConfiguration = .defaultlet proxyConfiguration: [AnyHashable : Any] = [ kCFNetworkProxiesHTTPEnable: true, kCFNetworkProxiesHTTPPort: 1...
2020-05-06 11:01:06
1295
2
原创 Mac 使用SSH连接服务器
其实百度云自带SSH服务端,因此这里只需要配置客户端就可以了。SSH的地址和端口可以直接在腾讯云控制台看到。 华为云这里的SSH Port是端口号,用户名是root@IP address1 在Mac OS上打开终端Terminal 2 输入 ssh root@VPS的IP地址 -p 端口号具体例子如:ssh root@12.34.56.78 -p 12345回车之后会...
2020-04-24 16:57:31
6952
原创 手工SQL注入
题目地址:http://123.206.87.240:8002/chengjidan/判断是否存在注入点【?id=32(数字任意)】链接的结尾依次添加语句【’】、【and 1=1】和【and 1=2】,来判断网站是否存在注入点。尝试在正常数据后加上单引号,发现数据为空,加上注释符(注释符:#,–+ , //, – )后发现依旧可以正常输出,存在注入点。看是否报错,如果数据库报错,说明后台数据...
2020-04-15 16:47:04
5254
1
原创 php intval()函数漏洞,is_numeric() 漏洞,绕过回文判断
Intval函数获取变量整数数值Intval最大的值取决于操作系统。32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。32位系统上, intval(‘1000000000000’) 会返回 2147483647。64 位系统上,最大带符号的 integer 值是 9223372036854775807。所以如果参数为2147483647,...
2020-04-15 11:18:14
770
原创 CentOS7 安装Python3.7.7
➜ yum install wget vim git gcc openssl-devel bzip2-devel libffi-devel -y➜ wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz➜ tar Jxvf Python-3.7.7.tar.xz➜ cd Python-3.7.7➜ ./configu...
2020-04-10 14:36:51
347
原创 macOS禁用NSTextView的引号替换
问题描述在NSTextView中输入json的双引号时,输入法为英文,但显示的是中文的引号。而且在输入过程中能感觉到英文引号替换成中文引号。再试了下单引号也存在该问题,而!,@,#等字符不存在该问题。猜测:是系统对引号做了特殊处理,在输入引号的时候将输入法更改为中文输入法吗?尝试1:实在是不知从何入手,查看了下NSTextView中的API,尝试了下重写-insertText,识别到输入中文...
2020-04-09 14:31:53
397
原创 Mac 使用tcping命令测延时
首先前往Github下载该项目最新的release值得一提的是,该项目的tcping比brew 安装的那个功能更全面,多了测速功能,brew 安装的只能用于检测端口是否打开,根本没啥作用。。解压之后,安装一下:➜ mv tcping /usr/local/bin/然后看一下使用说明:➜ tcpingtcping is a ping over tcp connection.Exa...
2020-03-27 10:57:25
1346
3
原创 秒杀一切越狱检测-----使用LLDB调试器版本的脱壳工具进行脱壳
场景某一天,项目经理扔来一个APP,叫我检测一下,结果发现这个APP做了越狱检测,在越狱手机上一开就exit(0),那么现在最流行的frida动态砸壳方法就行不通了,虽然最后使用Clutch静态砸壳工具砸壳成功,然而这个工具在iOS11.1之后因为兼容性问题被ban,只能在iOS10的越狱机上使用,那么如果哪天运气差,遇见一个只支持iOS12及以上,并且做了越狱检测的APP,那么该怎么办呢?经...
2020-03-20 15:08:46
1022
6
原创 使用curl命令测试延时
最近在研究如何测试代理服务器的速度以便选出最快的服务器,找了一圈发现其实系统自带的curl命令就能实现这个功能。curl命令的各个参数的介绍网上有很多,这里只给出几个常用的:curl 不输出任何信息,安静模式,走代理:curl -x socks5://127.0.0.1:1086 -m 10 -s -o /dev/null www.baidu.com-m 整个访问的超时时间-s 安静模...
2020-03-15 14:52:32
1296
原创 修改Windows系统版本
everyone都可以设置成2004版本把注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion中的"ProductVersion"项改为"2004"即可
2020-03-07 15:50:38
305
空空如也
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝