移动端开发
拿铁先生
不想当蛋糕大师傅的程序员不是好股民
展开
-
iOS攻防-实战(2)-反重签与反注入
前言:上一篇我们讲了如何通过重签名目标ipa文件以及修改Math-O来实现动态注入。知道如何攻击,是为了找出攻击细节来实现防御。这一篇我们来讨论下如何防御动态注入。相信了解了动态注入过程的同学都会有这样的体会:动态注入的核心步骤有2点:重签名 添加自己的framework反重签之前在讲重签名时,我留了一个伏笔:重签名时,打包的证书不是原始ipa开发团队的,证书变了,bun...原创 2019-12-05 11:47:21 · 1095 阅读 · 1 评论 -
iOS攻防-实战(1)-动态注入
前言:之前几篇讲了一些背景知识,这一篇进入正题,来讲一下动态注入的基本理论和流程。我们这里通过动态添加运行库的方式来实现动态注入。ipa包结构还记得我们之前介绍Math-O文件时,提到了Load commands嘛?其中有一部分是加载第三方库的:注意其中的:LC_LOAD_DYLIB(AFNetworking)。那么,能否通过修改Math-O文件来加载我们需要动态注入的库呢?答...原创 2019-12-03 19:25:26 · 1067 阅读 · 0 评论 -
iOS攻防-序章(2)-签名机制
前言:对于一个iOS开发入门来说,一定会被一堆诸如:csr文件、私钥、Provisioning Profile、p12等名词搞的一头雾水。当年我也如此,但相信我,iOS的签名机制其实并不复杂,而了解这套机制对于iOS攻防的研究有很大帮助何为签名假设A和B进行通讯,A向B发送了一个讯息,B收到后,会有一个问题?如何证明这个信息来自于A?了解过非对称加密算法的同学应该不难想出解决方法,...原创 2019-11-27 00:13:15 · 249 阅读 · 0 评论 -
iOS攻防-序章(1)-Mach-O文件结构解析
前言:最近因为工作需要,一直在研究iOS的逆向工程。说起来,这个方面涉及到的的知识面实在太广,所以想开一个系列,从基础知识到实战攻防,系统的总结一下最近的所思所学。第一篇,先从一个基础知识开始:Mach-O文件。说起Mach-O文件,很多开发人员应该不陌生。即使你没有听过Mach-O,但你也肯定知道exe文件是什么。每个操作系统都有自己的可执行文件,比如Linux下的ELF,Windo...原创 2019-11-22 11:15:38 · 511 阅读 · 0 评论 -
iOS 和 Android:UITableView与RecycleView的重用机制比较
引言:iOS和Android各有自己的列表组件。众所周知,列表组件一直都是移动端各个端中,组件重用、内存优化的重点。今天就来分析下iOS和Android各自的重用机制。Android:RecyclerView的缓存机制先来熟悉下ViewHolder的几个状态isInvalid:表示当前ViewHolder是否已经失效。通常来说,在3种情况下会出现这种情况:1.调用了Adapter...原创 2019-11-10 21:25:52 · 512 阅读 · 0 评论 -
移动端网络安全-密钥交换的前世今生(4)-番外篇
前言:上一篇提到了https依旧会有受到中间人攻击的风险,这一篇就来讲一下中间人攻击和相关的应对方法:ssl-pinning中间人攻击中间人攻击(Man-in-the-Middle Attack, MITM)是一种由来已久的网络入侵手段,常见的方式如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击等。这里就部展开细讲,主要讲一下在https环境下,如何实现中间人攻击。记得上一...原创 2019-11-05 21:33:59 · 349 阅读 · 0 评论 -
移动端网络安全-密钥交换的前世今生(3)
前言:之前的两篇,主要讲了DH和ECDH两种交换协议。今天来讲一个比较古老,但却使用很广泛的密钥交换方式:RSA非对称加密算法:RSA相信熟悉加密算法的同学对RSA这个词并不陌生,RSA是一种比较知名的非对成加密算法。那么,它和密钥交换协议有什么关系呢?实际上,早期的SSL/TLS使用的,就是RSA的密钥交换方式。首先,我们先来回顾一下RSA算法:摘录百度的一段话:R...原创 2019-10-29 23:34:36 · 378 阅读 · 0 评论 -
移动端网络安全-密钥交换的前世今生(2)
前言:前文讲了DH密钥交换协议,DH的数学基础是离散对数,而一个算法在数学上逆运算越困难,其本身被破解的难度越大。而我们今天要讲的椭圆曲线算法,在数学上,就复杂的多。 椭圆曲线的数学概念 椭圆曲线是由下面的方程描述的曲线:y² = x³ + ax + b4a³ + 27b² !=0比如,y² = x³ -x + 1的图像是:椭圆曲线有这样的两个性质:...原创 2019-10-24 13:48:50 · 243 阅读 · 0 评论 -
移动端网络安全-密钥交换的前世今生(1)
前言:在那个https还没有普及的黑暗年代,混沌的大地充斥着各种危险的明文传输(抱歉,中二了)。相信很多软件开发人员都遇到过通信加密的问题,早期的一些做法,只是简单的将对称加密的密钥写死在客户端中,通过对称加密的方式进行数据传输加密。然而这样的方案问题也十分明显,一旦客户端被反编译,密钥泄露,那么几乎所有客户端都暴露在了风险中。既然不适合将对称加密的密钥写死在客户端,那是否可以动态生成密钥...原创 2019-10-19 17:15:47 · 320 阅读 · 0 评论 -
Android动态代理解析
前言:做过Android开发的一般都使用过Retrofit这个三方框架,初一使用,会觉得很神奇:为什么把各个请求定义在一个接口里,通过几行代码就能实现网络请求?答案就是“动态代理”!何为代理?简单来说代理是一种软件设计模式,某些情况下,我们不希望修改已有对象的功能,但是我们又想在不改变调用者调用方法的情况下,改变调用后的具体实现逻辑,因此,我们会采用间接访问来实现目的。比如A类...原创 2019-08-16 18:34:47 · 861 阅读 · 0 评论 -
移动端开发规范
移动端开发规范引言:最近得空,整理一些平时工作中要求的开发规范,浅薄之处还请大家多指教。目录移动端开发规范代码规范基本原则代码清晰一致性通用规范类命名方法命名变量命名常量命名枚举类型命名图片命名通用规范通用设计规范开屏页版本号版本检查开屏页广告推送通用测试用例及处理规范规范用例数据埋点规范...原创 2019-08-16 10:13:23 · 2740 阅读 · 0 评论 -
算法及密码学
密码起源密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。密码学是信息安全等相关议题,如认证、访问控...原创 2019-08-19 17:11:04 · 1062 阅读 · 0 评论 -
Android事件分发机制研究
引言:相信不少Android开发都遇到过这样一个问题:“给一个控件写了setOnClickListener,结果View.OnClickListener怎么都不相应,查了半天,发觉原来这个控件有添加setOnTouchListener,一旦View.OnTouchListener中的onTouch返回true,那么View.OnClickListener是绝对不会响应的”。bug好解决,但是背后的...原创 2019-08-19 16:54:27 · 88 阅读 · 0 评论