一、windows能做ios逆向吗?
暂时不行。
其实如果你真够牛的话还可以这么干。逆向出 ios 的 API 和 ABI自己写一套工具开发应用,逆向出发布到 appstore 的方法,绕开苹果的验证机制发布到商店。最后, 逆向出一个操作系统并非不可能,ReactOS 就是完全逆向 Windows NT 制作的,已经可以直接运行商业软件。
二、iOS 如何进行逆向工程?
本人逆向经验丰富,对ios和mac osx底层有过深入挖掘. mac和ios有互相借鉴的地方,所以以下提到的信息可能适用于ios或者mac。
- 0x0.Background: 你必须要有很强的逆向sense,这个是逆向分析的基础,逆向的sense举个栗子:如果你发现看到一个产品之后能够大致猜出它的架构,它的关键部分,核心算法以及可能存在的bug,甚至能够猜出影响性能的是哪部分,这个需要很长时间的逆向分析和工程开发的经验。BTW:语言什么的就不说了,ARM,X86指令,Objective-C,C,C++
- 0x1.Tools: 你需要掌握以下工具:otool,lipo,ar,libtool,class-dump,mach-o-view(有空读一读它的代码,自己编译以下,加点功能什么的),hopper disassemble,ida pro,gdb,xcode开发要会的就不提了,还有一个很有用的codeunsign,最后再推荐一个我写的一个magic类:cccssw/call_at_anywhere GitHub 这个类用途很广,发挥余地很多.
- 0x2.Frameworks: 调用私有API什么的是最简单的部分,最直接的路径是去private frameworks下面根据frameworks的名称猜测各个framework是干什么的,然后用class-dump dump出header,在项目里面引用就可以用了.如果观察力到位,发现某些官方app有某些功能能够猜测出背后可能有调用私有api,反汇编这个官方程序就能找到私有api的调用形式.
- 0x3.Kernel: ios 和macos都是bsd+mach-o的混合模型,网上有一个图很清楚,说明其架构的. mach-o 的格式学习的最佳途径就是看mach-oview这个开源项目的代码。
- 0x4.Defend technics used by Apple:用得最普遍得就是利用xpcservice将调用放在另外一个可执行程序中,然后函数调用通过进程间通信完成,核心得逻辑不会在这个xpc调用里面,该xpc远程程序会继续调用底层frameworks,最后你就很难找到最核心的逻辑和算法到底在哪里了;关键部分用c实现,然后隐藏data structure,只留出必要的指针,hidden pointer的技术,keychain的实现就是这样做的,要逆向出它keychain的数据库格式非常难,尝试过,失败了;另外一方面可能考虑到代码的可维护性,大部分苹果的代码都有很详细的log,可能有开关控制log的打开关闭,如果能把log开起来,一个程序,framework就很容易跟踪了(静态分析),打开这些log一般要直接修改二进制文件,或者修改特殊的plist文件.
- 0x5.static analysis:静态分析一般就是先定位最关键的地方,定位的方法很多,一般先开log,然后分析完log后通过关键字来找。定位成功后,没有什么底层技术时,你想要干的事情基本上就快完成了,逻辑就在你面前,汇编配合伪代码就很简单了(除了有FSM或者jmp table的情况,这种情况还是动态分析吧). 有些涉及到底层技术,有一种内核级别调用的陷入函数(涉及到mach-o内核机制)比较麻烦,这种情况也有一些办法,做起来怎么样都是限制大,这篇文章How I cracked the security foundation of Mac OSX System 提供了一些技巧和思路。
- 0x6.dynamic analysis:动态分析要配合静态来做,主要还是用xcode的调试器或者gdb,xcode的符号断点.f6-f7-f6慢慢调.
- 0x7.reimplement logics:功能重现,逆向里面经常要做的事情,一个加密算法,解密算法要重新实现一遍,让自己可以用。途径有两条:1.照着汇编写出汇编版,c版或者objective-c的实现;2.直接调用二进制中的函数. 途径1是考你功底的,功底深做起来就是个体力活而已。途径2有两条路,一是修改二进制文件,或者patch你要的逻辑到一个有架子了的二进制文件,二是计算函数地址动态加载。 重点讲一下途径2,静态修改很麻烦,直接暴露需要解决以下问题:mach-o文件中有两个section与export function有关,其中一个Symbol table和与之相关的String table较容易修改,另外一个是Dynamic loader info比较难修改,里面有的相对位置需要做uleb128转换,另外存储信息的格式是链表格式,解决这两个就可以了. 静态修改除了这些,mach-o前面与section对应的头信息也要修改,长度,位置偏移量.; 途径2的动态加载就不多说了,看我github的项目call_it_any_where 应该是目前为止最方便的方式。
- 0x8.jail-development:越狱开发其实门槛比app store还要低.这一块与逆向有关的主要是hook class之类的,老外有一篇很详细的博文讲这块。貌似就在后面的blog list里面.
- 0x9.security issues: 建议手机别越狱,mac和ios下的maleware其实比windows下面还难发现.;keychain里面即使最严格的ACL策略也是能够绕过的;
讲一讲会逆向的好处:逆向是一门艺术也是一种研究方法,能够让你弄清楚程序运行的本来面目。看别人的实现也可以用来提升自己的架构能力。逆向能够找到一些诡异问题的root reason。最重要的是逆向能力强后,对程序,代码,算法,数据结构,计算机体系的认识会深刻很多。做项目也会从容很多,不太再会遇到什么bug搞不定。另外个人认为在漏洞挖掘上比起fuzzy逆向才是正途。
不会逆向的程序员不是好程序员。
最后再给些blog供学习:
- Reverse Engineering Mac OS X
- ChinaAlex
- Reverse Engineering
- rentzsch (Jonathan 'Wolf' Rentzsch) GitHub
- Matt Galloway
( 水平一般,如有错误和遗漏还请各位纠正、补充 ;-) )
三、逆向,安卓简单还是IOS简单?
我觉得还是各方面对比一下比较好。
开发方面:
Android开发Java、c/c++、kotlin,iOS objective-c、swift,最大差异可能就是iOS开发需要在macos上的xcode吧,但是程序员搞个苹果本应该都正常吧。
静态分析方面:
Android需要懂samli语法、arm汇编;iOS需要arm汇编,但是根据苹果设备要选择armv7还是arm64架构的汇编;两个平台使用的反编译工具差异不大;这块都差不多。
动态分析方面:
Android IDA就可以动态调试,iOS需要lldb去调试,差别就是ida是图形化的,lldb是命令行的;这块差异也不算大,算iOS稍微难一点吧。
逆向分析:
大致思路都差不多,定位方式也几乎一致,只是有不同的工具辅助定位,也没啥差异,分不出难易。
流量分析:
大同小异,没啥好说的。
注入:
android xposed、magisk;iOS theos,越狱开发装monkeydev就行,frida两个平台都有。也没啥太大差异。
执行文件:
Android dex相关的,so文件,iOS mach-o文件,fat文件;这块android稍微杂了一些,算Android稍微难吧。
常用保护方式:
大家都差不多,思路都差不多的。
保护壳:
因为iOS平台的特殊性,这块Android可以说比iOS的发挥空间要大得多,Android可研究的也要更多一些,Android更难。
系统方面:
Android开源,iOS部分开源,这块都能研究,但是Android能研究得更加深入一些,Android可以魔改系统,随便刷机,这块可以搞得地方太多了。
我是先学Android逆向之后在学iOS逆向的,可能之前踩过坑了,对这块的知识已经建立起一个知识框架了,iOS学起来挺轻松的,没觉得有什么不理解的情况。
个人觉得Android的难点或者可深入研究的领域在于脱壳部分。别看说的只是一个脱壳,脱壳的背后是有丰富的静态分析动态调试经验、文件结构、熟悉Dalvik、art、linker这些组建加载文件的流程、熟悉各种系统层面的hook、熟悉各种安全防护的应对方式、以及对于各个加固厂商持续性的研究还要有十足的耐心才可以达到一个高度。
iOS的难点或者可深入研究的领域是越狱开发。这块要做的就是熟悉iOS开发,有丰富的逆向破解经验,在这之上多去写插件就行。
而ollvm在两个平台都有涉及到,研究这块不仅可以作用在Android、iOS,物联网也能做。
就我个人来说,我更倾向于Android逆向更难一些,最近研究vmp脱壳,一步一步调试去找脱壳点、推指令替换表和还原可执行文件,头都要秃了,而且还只是研究的其中一个入门级的难度,身边有师傅都通杀所有软件壳了我压力好大。
最后,还要准备测试机,相对与nexus来说,iPhone真的是有点贵了。
四、软件逆向工程师待遇?
应届生工程师5000元起,随着技能、工龄增长,待遇提升,无上限。
五、逆向工程师有前途吗?
有前途。因为逆向工程师负责安卓程序的加解密和数据传输剖析、拆解、逆向等作业;逆向APK,了解运转进程;Andorid本地提权获得root权限;熟练把握软件逆向静态剖析、动态调试、代码盯梢等;了解Android开发,了解打包、反编译、破解流程;so破解等。
六、安卓逆向工程师待遇?
安卓逆向工程师的待遇因地区、工作经验、技能水平和所在企业等因素而有所差异。以下是一些可能影响安卓逆向工程师待遇的主要因素:
1. 技能和经验水平:技能和经验对待遇的影响非常重要。逆向工程师需要具备扎实的编程知识、安卓系统的了解以及相关的逆向工程和安全分析技能。经验丰富的工程师通常能获得更高的薪酬。
2. 所在地区:地理位置也是决定工程师薪酬的重要因素。薪资标准在不同地区可以有很大的差异,因为生活成本、经济水平和市场需求等因素可能会影响薪资水平。
3. 所在企业:不同公司对安卓逆向工程师的需求和薪资水平也会有所不同。一些知名的科技公司或网络安全公司可能会提供更好的薪资待遇和福利。
总体而言,安卓逆向工程师在当前技术高度发达的行业中有着良好的职业潜力和发展机会。但具体的待遇还取决于个人的技能与经验水平以及所在地区和企业的情况。建议您在就业时咨询相关企业或行业的人力资源部门,以了解更准确和具体的待遇情况。
七、逆向工程师百科?
逆向工程师
就是以深厚的技术和理论经验知识,镖窍他人的知识产权。以现阶段的技术层面,开拓思想。
八、逆向工程师有中年危机吗?
逆向工程师和其他职业一样,可能会面临中年危机。中年危机是指在职业生涯中,人们经历的一种心理和情感状态,通常发生在40岁左右。在逆向工程领域,中年危机可能表现为技术更新速度过快,自身技能跟不上,职业发展停滞等问题。
此时,逆向工程师需要重新审视自己的职业规划和发展方向,可能需要学习新技能或者转换职业方向,以应对职业生涯中的挑战。
九、逆向工程师和安全工程师哪个职业待遇好?
谢邀。就业来说我觉得安全工程好就业。面广一点。工资的话,现在都不怎么高
十、窑炉工程师招聘?
黄冈市中基窑炉有限公司是一家从事工业窑炉设计开发、加工制造、施工安装、热工调试、技术咨询;一条龙;服务的专业窑炉公司。
现招聘窑炉工程师一名,要求本科学历,有三到五年工作经验,电气工程专业,待遇工资月薪1-5万、五险一金。