漫谈iOS程序的证书和签名机制

http://www.pchou.info/ios/2015/12/14/ios-certification-and-code-sign.html

接触iOS开发半年,曾经也被这个主题坑的摸不着头脑,也在淘宝上买过企业证书签名这些服务,有大神都做了一个全自动的发布打包(不过此大神现在不卖企业证书了),甚是羡慕和崇拜。于是,花了一点时间去研究了一下iOS这套证书和签名机制,并撰文分享给需要的朋友。由于本人才疏学浅,多有遗漏或错误之处,还请大神多多指教。

非对称加密和摘要

非对称加密的特性和用法

非对称加密算法可能是世界上最重要的算法,它是当今电子商务等领域的基石。简而言之,非对称加密就是指加密密钥和解密密钥是不同的,而且加密密钥和解密密钥是成对出现。非对称加密又叫公钥加密,也就是说成对的密钥,其中一个是对外公开的,所有人都可以获得,称为公钥,而与之相对应的称为私钥,只有这对密钥的生成者才能拥有。公私钥具有以下重要特性:

  • 对于一个私钥,有且只有一个与之对应的公钥。生成者负责生成私钥和公钥,并保存私钥,公开公钥

  • 公钥是公开的,但不可能通过公钥反推出私钥,或者说极难反推,只能穷举,所以只要密钥足够长度,要通过穷举而得到私钥,几乎是不可能的

  • 通过私钥加密的密文只能通过公钥解密,公钥加密的密文只有通过私钥解密

由于上述特性,非对称加密具有以下的典型用法:

  • 对信息保密,防止中间人攻击:将明文通过接收人的公钥加密,传输给接收人,因为只有接收人拥有对应的私钥,别人不可能拥有或者不可能通过公钥推算出私钥,所以传输过程中无法被中间人截获。只有拥有私钥的接收人才能阅读。此用法通常用于交换对称密钥

  • 身份验证和防止篡改:权限狗用自己的私钥加密一段授权明文,并将授权明文和加密后的密文,以及公钥一并发送出来,接收方只需要通过公钥将密文解密后与授权明文对比是否一致,就可以判断明文在中途是否被篡改过。此方法用于数字签名

著名的RSA算法就是非对称加密算法,RSA以三个发明人的首字母命名。

非对称加密算法如此强大可靠,却有一个弊端,就是加解密比较耗时。因此,在实际使用中,往往与对称加密和摘要算法结合使用。对称加密很好理解,此处略过1w字。我们再来看一下摘要算法。

阅读更多关于漫谈iOS程序的证书和签名机制 ...

theos集成obfuscator-llvm

A toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.

Build:

Makefile:

TARGET_CC = /Users/zhaobaolin/work/tools/obfuscator/build/bin/clang
TARGET_CXX = /Users/zhaobaolin/work/tools/obfuscator/build/bin/clang++
_THEOS_TARGET_CFLAGS += -mllvm -fla -mllvm -sub
_THEOS_TARGET_CXXFLAGS += -mllvm -fla -mllvm -sub 

注:该开源库只包含了llvm核心和clang,如果代码中用了c++相关的代码,需要下载libcxxabi lldcompiler-rtlibcxx 后一起编译。

Restoring AddressBook.sqlitedb to iPhone – A Simplified Procedure

In my previous article, I described how to restore contacts from a backup to an iPhone.  The infuriating thing about restoring AddressBook.sqlitedb to an iPhone is that one can’t just drop in a replacement file, because after you reboot, the new file gets overwritten with an empty one.  I traced the overwriting of the addressbook to a process called dataaccessd.  This process can’t be killed easily, because launchd will automatically restart it if it dies.  After some testing, I have now devised a procedure which is simpler than the one described in my previous article:

This procedure assumes that you have already obtained a copy of AddressBook.sqlitedb which contains the contacts you want to restore.

1. Using iFunBox, navigate to Raw File System/Library/LaunchDaemons and copy com.apple.AddressBook.plist and com.apple.dataaccess.dataaccessd.plist to your computer.

2. Using iFunBox, delete com.apple.AddressBook.plist andcom.apple.dataaccess.dataaccessd.plist from your iPhone.

3. Power off and restart your iPhone

4. Using iFunBox, copy your AddressBook.sqlitedb into the iPhone at Raw File System/var/mobile/Library/AddressBook

5. Using iFunBox, copy the com.apple.AddressBook.plist andcom.apple.dataaccess.dataaccessd.plist from your computer back to the Raw File System/Library/LaunchDaemons folder in your iPhone.

6. Power off and restart the iPhone, and enjoy your restored contacts.

SS(影梭)一键搭建教程

环境:CentOS6.5 

1、 运行安装脚本

wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
chmod +x shadowsocks.sh

./shadowsocks.sh 2>&1 | tee shadowsocks.log

2、相关配置

/etc/shadowsocks.json 
{
   "server":"your_server_ip",
   "local_address": "127.0.0.1",
   "local_port":1080,
   "port_password":{
       "8989":"password0",
       "9001":"password1",
       "9002":"password2",
       "9003":"password3",
       "9004":"password4"
   },
   "timeout":300,
   "method":"aes-256-cfb",
   "fast_open": false

Debian 的 preinst, postinst, prerm, 和 postrm 脚本

http://wiki.ubuntu.org.cn/Deb%E5%8C%85%E7%AE%A1%E7%90%86%E5%90%91%E5%AF%BC

deb包的执行脚本

许多软件安装前或安装后都需要进行一些设置工作,deb格式的软件安装过程执行的操作是由如下脚本来控制的

debian/preinst

debian/postinst

debian/prerm

debian/postrm