想登录个网银,结果在神样兼容性前瞬间阵亡。
想起两年多前支付宝就推出了安全控件,手滑点开看看究竟。
安全控件自身的原理当然不明;)
不过 安装程序写的也蛮有趣,代码不多逻辑简单,正好当个 经典案例。
从官网上下载的 安全控件是个tar.gz的压缩包,里面很简单,只有一个shell文件即aliedit.sh。
该文件的主要内容见下:
aliedit.sh会将该部分二进制内容当作另一个tgz包解压开来,获得install.sh和安全控件本尊。
最后总结下该安装程序大概的结构如下:
想起两年多前支付宝就推出了安全控件,手滑点开看看究竟。
安全控件自身的原理当然不明;)
不过 安装程序写的也蛮有趣,代码不多逻辑简单,正好当个 经典案例。
从官网上下载的 安全控件是个tar.gz的压缩包,里面很简单,只有一个shell文件即aliedit.sh。
该文件的主要内容见下:
从94行以下都是二进制内容。72 main() 73 { 74 SetStrings 75 Mkdir 76 ARCHIVE=`awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' "$0"` 77 tail -n+$ARCHIVE "$0" | tar xzvm -C $TMP_DIR > /dev/null 2>&1 3>&1 78 if [ $? -ne 0 ] 79 then 80 echo $PACKAGE_BAD 81 Quit 82 fi 83 CUR_DIR=`pwd` 84 cd $TMP_DIR 85 ./install.sh 86 #cd "$CUR_DIR" 87 rm -rf $TMP_DIR 88 exit 0 89 } <snip> 94 __ARCHIVE_BELOW__ <snip>
aliedit.sh会将该部分二进制内容当作另一个tgz包解压开来,获得install.sh和安全控件本尊。
然后调用install.sh检查系统环境,拷贝合适的安全控件到firefox的控件目录。$ awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' aliedit.sh 95 $ tail -n+95 aliedit.sh | tar xzvm install.sh lib/ lib/libaliedit32.so lib/libaliedit64.so README
当然,对于opera来说,配置控件检索目录包含firefox便可支持,而chromium据说默认便会查找firefox的控件目录。91 elif [ $sysinfo = 'x86' ] 92 then 93 ALIPAY_BIN=libaliedit32.so 94 elif [ $sysinfo = 'amd64' ] 95 then 96 ALIPAY_BIN=libaliedit64.so 97 fi
<snip> 120 FF_PLUGIN_DIR=$HOME/.mozilla/plugins <snip> 152 install -m 0755 $LIB_DIR/$ALIPAY_BIN $FF_PLUGIN_DIR
最后总结下该安装程序大概的结构如下: