E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
IOS逆向
iOS逆向
1023-反调试&&反反调试
概括:Xcode、LLDB001--debugserver002--debugserver下003--命令行工具004--反调试Ptrace005--反Ptrace006--通过framework防护调试007--总结001--debugserver上查看debugserverimage.pngimage.png手机IPimage.png越狱环境下:先连接手机,再通过debugserver调试#.
lukyy
·
2022-02-13 09:02
iOS逆向
学习笔记8(MachO文件)
1什么是MachO文件 Mach-O其实就是MachObject文件格式的缩写,是Mac以及iOS上可执行文件的格式,类似于Windows上的PE格式(PortableExectable)、linux上的elf格式(executableandLinkingFormat)。 MachO是一种可执行文件、目标代码以及动态库等类型文件的格式。作为a.out格式的替代,Mach-O提供了更强的扩展性。
_从今以后_
·
2022-02-13 09:58
iOS逆向
:签名机制
目录一,加密解密二,单向散列函数三,数字签名四,证书五,签名机制六,重签名(一)七,重签名(二)一,加密解密1,为何加密:防止消息被窃听加密前加密后2,如何加密对称密码:加密密钥和解密密钥相同公钥密码(非对称密码):加密密钥和解密密钥不同3,对称密码DES(DataEncryptionStandard)1>是一种将64bit明文加密成64bit密文的对称密码算法2>严格来说,密钥长度是64bit,
码小菜
·
2022-02-13 01:09
iOS逆向
工程(六):使用frida-ios-dump工具,一键脱壳
使用frida-ios-dump工具,一键脱壳一、加壳我们知道App上传到AppStore后,会被自动加壳,那么什么是加壳呢?加壳就是利用特殊的算法,对可执行文件的编码进行改变(例如:压缩、加密),已达到保护程序代码的目的。加壳之前,执行程序,就会直接把可执行文件载入到内存中,如下图所示:加壳之前的执行过程.png加壳之后,执行程序,会把包裹着加密可执行文件的壳程序载入内存,在内存中,由壳程序对可
冰风v落叶
·
2022-02-12 11:46
01-
iOS逆向
学习必要条件
设备要求一台完美越狱的iOS设备。iPhone:建议是iPhone5s以上(支持arm64架构)iPad:建议是iPadAir、iPadmini2等(支持arm64架构)。系统要求iOS8以上判断系统是否能完美越狱建议使用PP助手官网:http://jailbreak.25pp.com/ios什么是iOS越狱越狱,英文Jailbreak,指利用iOS系统的漏洞,获取iOS系统的Root权限,解开之
hejunbinlan
·
2022-02-12 06:46
iOS逆向
之脱壳
一、加壳和脱壳1、加壳利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目的。iOS端App在上线之前会有苹果商店进行FairPlayDRM数字版权加密保护,我们称之为“加壳”。图1:加壳.png2、脱壳要对AppStore分发的iOSApp进行分析,我们需要先对App进行解密,我们称之为“脱壳”,有些人也称为“砸壳”。脱壳之后的二进制文件就是原始的、未加密的二进制
张聪2021
·
2022-02-12 02:27
谈谈
iOS逆向
从业iOS后,也算兢兢业业,平时关注一些OC,swift动态,看别人造的完美轮子来学习,而自己造的轮子和自己做的饭有相同功效,只有自己能吃的下去。然而这并不是重点,重点是自己一直忽略的ios黑产,其实依然一片繁荣。最近会帮朋友搞一些ios破壳和逆向、外挂的功能,也算是涨了见识。下面列举一些常见的黑产需求:修改别人游戏包,自己获利。破壳,用途太广。可用来研究逻辑,也修改发布等等。外挂。微信抢红包,钉
pipa
·
2022-02-11 13:10
iOS逆向
与安全9.1:越狱调试
RevealReveal是一款UI调试神器,对iOS开发非常有帮助。尤其是越狱调试,能让越狱开发如虎添翼。安装Revealmac电脑安装下载安装包安装手机安装安装revealLoader插件有设置项,在revealLoader中查看就好环境配置导入dylib文件由于新版本的Reveal只有Framework文件,所以需要修改Framework的可执行文件为dylib库找到相关库image.png在
looha
·
2022-02-10 18:34
iOS逆向
开发(五)----iOS签名机制
iOS逆向
开发(五)----iOS签名机制根据密钥的使用方法,可以将密码分为2种:对称密码公钥密码(非对称密码)对称密码在对称密码中,加密、解密时使用的是同一个密钥,常见的对称密码算法有:DES,3DES
会笑的Even
·
2022-02-08 16:36
iOS逆向
-手机和电脑进行连接
为了能够让Mac终端中的命令行能作用在iPhone上,我们得让Mac和iPhone建立连接。1、iPhone上安装OpenSSH工具(软件源http://apt.saurik.com)SSH:SecureShell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议使用SSH,可以把所有传输的数据进行加密,“中间人”攻击方式就不可能实现,能防止DNS欺骗和IP欺骗OpenSSH是S
Missmiss懵
·
2022-02-08 13:18
iOS逆向
-汇编(六)
栈栈:是一种具有特殊的访问方式的存储空间(后进先出,LastInOutFirt,LIFO)8086会将CS作为代码段的段地址,将CS:IP指向的指令作为下一条需要取出执行的指令8086会将DS作为数据段的段地址,movax,[address]就是取出DS:address的内存数据放到ax寄存器中8086会将SS作为栈段的段地址,任意时刻,SS:SP指向栈顶元素8086提供了PUSH(入栈)和POP
Stone_熊小叔
·
2022-02-06 18:17
iOS逆向
实战--012:对称加密
对称加密方式:明文通过密钥加密得到密文,密文通过密钥解密得到明文。定义需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用对称性加密也称为密钥加密。所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是
帅驼驼
·
2022-02-06 17:05
iOS逆向
,钉钉在家就可以打卡的秘诀!
前言疫情期间在家上班,打卡是个麻烦事,笔者就想起实现这个需求,本文由于讲述从思路到完整分析过程演示,涉及到的知识点也基本都有介绍,因此篇幅较长,对相关知识比较熟悉的同学可以自行跳过.本篇文章将演示从思路->探索->调试->注入,来实际逆向一个应用的完整过程.实现的效果是修改Wi-Fi打卡以及GPS位置打卡规则,达到不在要求Wi-Fi环境或者GPS范围下也可以正常打卡的需求.(本文使用目前钉钉最新版
马士兵教育苹果老师
·
2022-02-06 15:15
iOS逆向
1025-安全终章
001--代码混淆代码混淆的作用:防止别人通过类名、方法名猜出其功能。一般去混淆关键的信息功能!不能全工程代码混淆,效率会严重降低!创建PrefixHeader_pch文件,用宏代替:方法名、类名//------------------------PrefixHeader_pch----------------//PrefixHeader.pch//001--UserInfoDemo#ifndef
lukyy
·
2022-02-06 15:48
iOS逆向
攻防之了解MachO文件
“凡心所向,素履所往,生如逆旅,一苇以航。”-《尘曲》图片发自App直入正题,今天我们来了解一下逆向Hook一个App非常重要的文件,就是MachO文件。通过查看应用打包后的ipa包内容,我们发现,用户的代码部分就是在MachO文件里面,那么MachO到底是什么呢?我们来一起了解一下今天MachO文件相关的知识内容,这也是逆向分析非常关键的一环:1、MachO文件简介2、可执行文件3、通用二进制文
溪浣双鲤
·
2022-02-06 01:04
iOS逆向
攻防之应用签名、证书、描述文件以及手动/自动重签名
接着上篇数字签名的内容,数字签名就是对原始报文数据的Hash值进行一次非对称的加密,数字签名主要使用来校验数据的;那么代码签名,顾名思义就是用来校验代码的代码签名是对可执行文件或者脚本进行数字签名,是用来确认软件在签名后未损坏或者被修改的措施。和数字签名原理一样,只不过签名的数据是代码而已。那么接下来我们一点点的来分析:1、苹果双向验证签名原理2、描述文件的产生3、使用codesign进行应用重签
溪浣双鲤
·
2022-02-06 00:11
iOS逆向
-越狱(Ⅹ)
越狱(jailBreak)通过iOS系统安全启动链漏洞,从而禁止掉信任链中负责验证的组件。拿到iOS系统最大权限ROOT权限.iOS系统安全启动链当启动一台iOS设备时,系统首先会从只读的ROM中读取初始化指令,也就是系统的引导程序(事实上所有的操作系统启动时都要经过这一步,只是过程略有不同)。这个引导ROM包含苹果官方权威认证的公钥,他会验证底层启动加载器(LLB)的签名,一旦通过验证后就启动系
鼬殿
·
2022-02-05 23:28
iOS逆向
之移除Oplayer lite广告
iOS逆向
之移除Oplayerlite广告一、环境要求:1、iPodtouch6:iOS10.3.1(已经越狱)2、Xcode安装MonkeyDev3、OPlayerLite.ipa(WindowPP助手获取
Evans_Xiao
·
2022-02-05 22:15
iOS逆向
之签名原理
前言本篇文章虽然是介绍iOS开发中ipa包的签名原理。但因为签名涉及到密码学中的概念。在了解签名之前,我们需要明确一些概念。密码学中,根据加解密密钥的不同,通常把加密方式分为对称密码(对称加密)和公钥密码(非对称加密)。常见加密算法有:DES、3DES、DESX、AES、RSA、ECC。其中RSA、ECC是非对称加密算法。以下是一些必要的概念。对称密码:又叫做对称加密。加密和解密使用的是同一个密钥
VV木公子
·
2022-02-05 10:53
iOS逆向
(1)--初识汇编
001--初识汇编我们在学习逆向开发之前,我们要了解一个基本的逆向原理.首先我们是逆向iOS系统上面的APP.那么我们知道,一个APP安装在手机上面的可执行文件本质上是二进制文件.因为iPhone手机本质上执行的指令是二进制.是由手机上的CPU执行的.所以逆向开发是建立在分析二进制上面.所以今天我们接下来的课程从非常基础的东西开始讲解.汇编语言的发展机器语言由0和1组成的机器指令.加:010000
空壳子XJ
·
2022-02-05 08:33
iOS逆向
砸壳之dumpdecrypted
1.把app用iTools倒到电脑桌面,生成api的包,用归档实用工具打开2.然后打开显示包内容,找到可执行文件,用Go2shell打开,在终端输入otool-lWeChat|grepcrypt,查看文件加密还是不加密,cryptid1为加密,cryptid0为不加密3.在终端输入:lipo-infoWeChat,结果Architecturesinthefatfile:WeChatare:armv
xhzth70911
·
2022-02-04 22:04
iOS逆向
一:数字签名&苹果应用双重签名原理&应用重签名
hashhash(哈希)算法是指将任意长度的文本,通过一个算法后得到一个固定长度的文本(也可能是二进制数据),哈希其实是一种思想,所有符合这种思想的算法都可以称之为哈希算法(不如MD5,sha1,sha256)哈希算法具有以下特点:1.相同的源文本,通过算法得到的结果必然相同2.不同的原文本,通过算法得到的结果必然不同(也有散列碰撞的情况不过概率很小)3.无法从结果反推出源文本hash的应用:1.
superFool
·
2022-02-03 10:02
iOS逆向
实战_微信
一.说明我的手机是越狱的iPhoneX12.1系统.mac是10.14.5系统.二.找微信mac终端运行sh_sshWithUSB.sh,root权限登录到手机iphone运行ps-A,找到微信的位置486??0:06.72/var/containers/Bundle/Application/5C8E31C1-E9EF-4E15-902D-6AFA25B99E7D/WeChat.app/WeCha
globalYK
·
2022-02-03 08:31
iOS逆向
app之MonkeyDev
GitHub地址https://github.com/AloneMonkey/MonkeyDev中文文档https://github.com/AloneMonkey/MonkeyDev/wiki/%E5%AE%89%E8%A3%851.安装最新的theossudogitclone--recursivehttps://github.com/theos/theos.git/opt/theos2.安装l
SylarCao
·
2022-02-02 23:30
iOS逆向
06 -- Mach-O
Mach-O文件Mach-O是MachObject文件格式的缩写,是mac以及iOS上可执行文件的格式,例如当XcodeApp工程编译完成之后就会生成一个可执行文件,其格式就是Mach-O文件;Mach-O的相关名词Executable可执行文件;Dylib动态库;Bundle无法被连接的动态库,只能通过dlopen()加载;Image指的是Executable,Dylib或者Bundle的一种,
YanZi_33
·
2022-01-06 13:20
iOS逆向
之断点技巧
如何断在没有源码的第三方库里,这里涉及到lldb命令:brs-a+函数地址如何获得函数地址:1.可以通过IDA查找2.可以通过打断点到他的下级调用函数在函数栈切换成汇编模式才能看到函数起始地址@1.xcode-->Debug-->DebugWorkflow->AlwaysShowDisassembly查看汇编@2.已知0x100f0a2b0为函数的起始地址@3.通过函数地址-ASLR=函数mach
·
2021-12-01 17:02
ios逆向工程xcode
iOS逆向
技巧之HOOK
目前的几种hook方式:1.通过oc的runtime方式去hook,这个仅限于oc方法的hook,有局限性.2.通过monkeydev的logs方式进行hook,这个是monkeydev在oc的runtime方式封装成工具形式,也仅限于oc方法的hook.3.通过monkeydev的substrate可以hook地址,地址查找可通过IDA查看,优点:1.应用范围比较广,可以hookc、c++、sw
·
2021-12-01 16:23
逆向工程ioshook
iOS逆向
开发:密码学 HASH
前言最近看了一篇关于逆向实战的文章:来谈谈
iOS逆向
工程之App脱壳,比起理论还是实战更有趣,觉得还不错分享给大家看看,参考参考。好话不多说,开始本篇文章的主题吧。
秃头少女_
·
2021-11-17 15:36
iOS逆向
之深入解析Theos开发插件如何使用
一、Logos语法Logos作为Theos开发组件的一部分,通过一组特殊的预处理指令,可以让编写函数钩子(hook)代码变得非常简单和清晰,Logos是随着Theos发布的。%hook指定需要hook的类名,以%end结尾。%log用来打印log,将信息输入到syslog中,如%log((NSString*)@“ZeluLi”)。%orig执行被hook函数的原始代码,类似于super.metho
Forever_wj
·
2021-10-23 03:30
iOS逆向安全攻防
Logos语法
工程目录下文件
编译和安装deb
免输密码进行SSH
压缩方式不被支持问题解决
iOS逆向
之hook框架frida的安装和使用
一、Frida利用Hopper、class-dump、ios-ssl-kill-switch、Keychain-Dumper、MachOParser可以进行静态分析。使用CycriptTricks(Powerfulprivatemethods)、UIButton的sendActionsForControlEvents、DerekSelanderLLDB(Pythonscriptstoaidinyo
Forever_wj
·
2021-10-23 02:56
iOS逆向安全攻防
Frida的安装
Frida
调试
利用frida进行dump
Frida使用问题的解决
iOS逆向
一环境搭建
1.越狱手机自行百度越狱教程(借助checkra1n工具)2.Mac远程登录到iPhone---使用账号密码1.使用OpenSSH远程登录2.在iPhone上通过Cydia安装OpenSSH工具(软件源http://apt.saurik.com)3.在Mac的终端输入ssh账户名@服务器主机地址比如
[email protected]
(这里的服务器是手机)初始密码alpine4.最好修改一下roo
大虾咪
·
2021-09-29 01:39
iOS 逆向开发25:越狱调试上
iOS逆向
开发文章汇总目录一、Cycript二、获取ZFB登录密码2.3Theos创建插件进行HOOK三、Reveal四、debugserver前面的文章中使用砸壳后重签的APP进行调试,本篇文章在越狱环境下不重签
differ_iOSER
·
2021-09-03 09:33
iOS 逆向开发 文章汇总
1、底层基础
iOS逆向
开发01:ARM汇编基础
iOS逆向
开发02:寄存器&栈&指令2、函数的本质
iOS逆向
开发03:函数本质上
iOS逆向
开发04:函数本质下3、汇编相关
iOS逆向
开发05:判断&循环&Switch
iOS
differ_iOSER
·
2021-09-03 09:14
iOS 逆向开发12:iOS 应用重签名
iOS逆向
开发文章汇总目录一、codesign二、重签名步骤2.1使用终端重签名演示、2.2使用Shell脚本重签名演示三、Shell脚本四、用户组&文件权限获取ipa包的方法:通过iTunes获取(新版
differ_iOSER
·
2021-09-02 09:50
iOS 逆向开发21:Logos
iOS逆向
开发文章汇总目录一、Logos简介二、Logos使用三、使用Logos为WeChat设置界面添加Cell一、Logos简介Logos语法其实是CydiaSubsuct框架提供的一组宏定义。
differ_iOSER
·
2021-09-02 09:00
iOS 逆向开发05:判断&循环&Switch
iOS逆向
开发文章汇总目录一、cmp(Compare)比较指令二、循环三、Switch3.1分支较少的Switch、3.2分支较多的Switch、3.3Switch建表查询总结、3.4Switch总结一
differ_iOSER
·
2021-08-15 11:27
证书签名
iOS开发证书、bundleID、AppID、描述文件、p12文件,及企业证书打包发布详述漫谈iOS程序的证书和签名机制
iOS逆向
-shell脚本自动重签名与代码注入iOSApp签名的原理代码签名探析
IAM121
·
2021-07-22 10:14
iOS逆向
笔记
1.frida-iOS-dump砸壳1.mac使用ssh连接iPhone,把当前连接设备的22端口(SSH端口)映射到电脑的2222端口,2.下载frida-ios-dump源代码并安装依赖gitclonehttps://github.com/AloneMonkey/frida-ios-dump.git#下载源代码cdfrida-ios-dump#切换到代码目录pipinstall-rrequir
zhq1992
·
2021-07-02 10:56
THEOS/bin/nic.pl: No such file or directory
iOS逆向
的时候,创建Theos工程时按照网上教程遇到THEOS/bin/nic.pl:Nosuchfileordirectory问题。
xyzcwb
·
2021-06-27 21:08
iOS逆向
之Tweak注代码
工欲善其事,必先利其器哪里下载?哪里安装?当然是百度去啦1OpenSSH(越狱设备安装,供外部连接设备)2theos(越狱开发工具包,生成tweak)theos创建tweak终端输入:nic.plChooseaTemplate(required):11projectName(repquired)//工程名字PackageName[com.yourcompany.firsttweak]Author/
叛逆点起一根烟
·
2021-06-26 18:08
《
iOS逆向
03》app重签名
准备工作iPhone手机(越狱或非越狱均可)微信app脱壳后的ipa对ipa文件进行处理解压ipa文件将.ipa文件的后缀名修改为.zip,然后解压得到Payload文件夹,Payload下是WeChat.app查看app包的签名信息:codesign-vv-dWeChat.app删除多余的文件列表第一项WeChat.app包内的Plugins文件夹和Watch文件夹用不到,可以直接删除Watch
不仅仅是个程序猿
·
2021-06-26 16:30
iOS逆向
攻防之HASH,数字签名,对称加密算法
在密码学中,加密部分主要分为对称加密和非对称加密,非对称加密主要有RSA非对称加密(使用公钥/私钥来加密解密),对称加密主要有DES/3DES/AES对称加密算法,顺带提一下我们今天介绍的Hash算法,Hash属于一种消息摘要算法,不属于加密算法,但是由于其单向运算,不可逆性,所以Hash是加密算法中的构成部分,Hash算法主要有MD5/Sha1/Sha2,这几个只是Hash算法加密精度有所不同。
溪浣双鲤
·
2021-06-26 12:25
iOS逆向
学习笔记3 (函数的本质上)
1.栈1.1栈的概念 栈是一种具有特殊访问方式的存储空间(后进先出)。1.2栈中最重要的两个寄存器 SP寄存器:栈顶寄存器,在任意时刻都会保存栈顶的地址。 FP寄存器:栈底寄存器(也称为x29寄存器,属于通用寄存器,在某些时刻利用它来保存栈底的地址) 注意:ARM64中对栈的操作是16字节对齐的,寄存器存储空间是8字节大小的,也就是128bit1.3栈的读写指令读指令:ldr(loadre
_从今以后_
·
2021-06-26 10:29
iOS逆向
(3)-APP重签名
转载:原文地址本文将从原理分析,到利用原理的漏洞,再到具体过程,最后利用脚本全自动实现。作为一名iOS开发者肯定知道iOS开发证书,那么证书具体是什么呢?为什么到我们本地的不是证书本身,而是一个称之为描述文件的东西。而这「描述文件」又具体是什么呢?在知道这「描述文件」后,我们是不是可以通过将「描述文件」替换为我们自己的「描述文件」进行一些有意思的事情呢?比如这篇文章的主题,对一个APP进行重签名,
iOS猿_员
·
2021-06-25 07:11
iOS逆向
-砸壳(Clutch & dumpdecrypted)
MachO文件->苹果加密->加壳文件加壳文件->苹果解密->MachO文件(DYLD)解密过程:DRM(数字版权管理)检查找到合适结构进行解密使用DYLD加载解密的MachO砸壳工具:Clutch静态砸壳dumpdecrypted动态加壳静态砸壳:调用系统的解密程序动态砸壳:得到系统解密后的MachO文件Clutch静态砸壳前提条件:手机已越狱1.下载安装Clutch到手机github下载Clu
Caolongs
·
2021-06-24 12:54
iOS逆向
-day8:LLDB 动态调试
一、什么是动态调试?答:将程序运行起来,通过打断点、打印等方式,查看参数,返回值,函数调用流程等二、Xcode的动态调试原理Xcode的动态调试原理2.1、Xcode的动态调试原理概述我们的手机新买回来的时候是没有安装debugserver的,它是安装在Xcode的/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platf
IIronMan
·
2021-06-23 20:56
iOS逆向
02 -- SSH与SSL
Mac远程登录iPhone我们经常在Mac终端上,通过敲一些命令来完成一些操作;iOS和MacOSX都是基于Darwin(苹果的一个基于Unix的开源系统内核),所以iOS中同样支持终端命令操作;在逆向工程中,我们经常会通过命令行来操纵iPhone;为了能够让Mac终端命令能作用在iPhone上,我们需要让Mac和iPhone之间建立连接;--通过Mac远程登录到iPhone的方式建立连接;SSH
YanZi_33
·
2021-06-23 11:56
iOS逆向
01 -- JailBreak越狱
逆向App的思路界面分析Cycript与Reveal代码分析对Mach-O文件的静态分析MachOView,class-dump,HopperDisassembler,ida等工具的使用动态调试对运行中的App进行代码调试debugserver,LLDB工具的使用代码编写注入代码到App中必要是还要重新签名,打包ipaiOSJailBreak越狱利用iOS系统的漏洞,获取iOS系统的最高权限(Ro
YanZi_33
·
2021-06-23 11:10
iOS逆向
12:Mach-O文件(上)
iOS底层原理+逆向文章汇总本文主要介绍Mach-O文件格式以及通用二进制文件Mach-O文件概述Mach-O其实是MachObject文件格式的缩写,是mac以及iOS上可执行文件的格式,类似于windows上的PE格式(PortableExecutable),linux上的elf格式(ExecutableandLinkingFormat)Mach-O是一种用于可执行文件、目标代码、动态库的文件
Style_月月
·
2021-06-23 08:15
iOS 模块分解—「逆向流程分析(上)」
引言本文测试工具iPhone:7P、iOS9.3.2
ios逆向
工程指的是在软件层面上进行逆向分析的一个过程。
SunyongHH
·
2021-06-23 07:52
上一页
3
4
5
6
7
8
9
10
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他