除法啰嗦,不仅是 Python。整数除以整数进入 Python 交互模式之后(以后在本教程中,可能不再重复这类的叙述,只要看到>>>,就说明是在交互模式下),练习下面的运算:>>> 2 / 50>>> 2.0 / 50.4>>> 2 / 5.00.4>>> 2.0 / 5.00.4看到没有?麻烦出来了(这是在 Python2.
一提到计算机,当然现在更多人把她叫做电脑,这两个词都是指 computer。不管什么,只要提到她,普遍都会想到她能够比较快地做加减乘除,甚至乘方开方等。乃至于,有的人在口语中区分不开计算机和计算器。有一篇名为《计算机前世》的文章,这样讲到:还是先来看看计算机(computer)这个词是怎么来的。
当安装好 Python 之后,其实就已经可以进行开发了。按照惯例,第一行代码总是:Hello World值得纪念的时刻:Hello world不管你使用的是什么操作系统,总之肯定能够找到一个地方,运行 Python,进入到交互模式。像下面一样:Python 2.7.6 (default, Nov 13 2013, 19:24:16) [GCC 4.6.
任何高级语言都是需要一个自己的编程环境的,这就好比写字一样,需要有纸和笔,在计算机上写东西,也需要有文字处理软件,比如各种名称的 OFFICE。笔和纸以及 office 软件,就是写东西的硬件或软件,总之,那些文字只能写在那个上边,才能最后成为一篇文章。那么编程也是,要有个什么程序之类的东西,要把程序写到那个上面,才能形成最后类似文章那样的东西。
这个标题,我借用了一本书的名字——《程序员修炼之道:从小工到专家》——这本书特别推荐阅读。“从小工到专家”,也是很多开始学习编程的朋友的愿望。如何能实现呢?上面所提到的那本书中,给出了非常好的建议,值得借鉴。
我已经在《零基础学 Python(第一版)》中写了一个专门讲述 Python 故事的——唠叨一些关于 Python 的事情——章节,今天再写类似的标题,不打算完全重复原来的,只是把部分认为重要的或者不可或缺的东西复制过来。越来越火的 Python在前几年(before 2011),我跟一些朋友介绍 Python 的时候,看到的常常是一种很诧异的眼神,通常会听到:“那时什么东西?
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
Objective-C 代码容易被 hook,暴露信息太赤裸裸,为了安全,改用 C 来写吧!当然不是全部代码都要 C 来写,我指的是敏感业务逻辑代码。 本文就介绍一种低学习成本的,简易的,Objective-C 逻辑代码重写为 C 代码的办法。也许,程序中存在一个类似这样的类: @interface XXUtil : NSObject + (BOOL)isVerified; + (BOOL)isNeedSomething;
class-dump 可以很方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完善的程序给同行留下笑柄。所以,我们迫切的希望混淆自己的代码。混淆的常规思路混淆分许多思路,比如: 1)花代码花指令,即随意往程序中加入迷惑人的代码指令 2)易读字符替换 等等 防止 class-dump 出可读信息的有效办法是易读字符替换。
为了不让攻击者理清自己程序的敏感业务逻辑,于是我们想方设法提高逆向门槛。 本文就介绍一个防御技巧——利用 static 关键字裁掉函数符号。原理如果函数属性为 static ,那么编译时该函数符号就会被解析为 local 符号。 在发布 release 程序时(用 Xcode 打包编译二进制)默认会 strip 裁掉这些函数符号,无疑给逆向者加大了工作难度。
ASLR (Address Space Layout Randomization),即地址空间随机布局。大部分主流的操作系统都已实现了 ASLR,以防范对已知地址进行恶意攻击。iOS 从 4.3 开始支持 ASLR,Android 从 4.0 也支持了 ASLR 机制。
在应用开发过程中,我们希望知道设备是否越狱,正以什么权限运行程序,好对应采取一些防御和安全提示措施。iOS7 相比之前版本的系统而言,升级了沙盒机制,封锁了几乎全部应用沙盒可以共享数据的入口。即使在越狱情况下,限制也非常多,大大增加了应用层攻击难度。
MobileSubstrate 可以帮助我们加载自己的动态库,于是开发者们谨慎的采取了对 MobileSubstrate 的检索和防御措施。 那么,除了依靠 MobileSubstrate 帮忙注入 dylib ,还有别的攻击入口吗?
题外话开篇先扯几句题外话,许多朋友都问我怎么不写防啊,我确实有点犹豫。hackers 总是想象如果自己是开发者会怎么写,然后才能找到入手点。同理,开发者们也要想象自己是 hackers 会怎么做,才能采取相应的防御措施。然后,就是一场递归的博弈。 拿越狱检测这件事来说,起初大家只需判断有无安装 Cydia 就好了,hackers 们说好,那我就不安装 Cydia 也可以动手脚。
众所周知,Objective-C 的首选 hook 方案为 Method Swizzle,于是大家纷纷表示核心内容应该用 C 写。 接下来进阶说说 iOS 下 C 函数的 hook 方案,先介绍第一种方案--- fishhook .什么是 fishhookfishhook 是 facebook 提供的一个动态修改链接 Mach-O 符号表的开源工具。
如果你已阅读了《 iOS 安全攻防》系列专栏之前的文章,一定已经对静态以及运行时分析 App 有了一定的了解。 我们可以借助的分析工具很多,工具和工具之间一般没有什么优劣比较性,完全看个人习惯什么擅长什么。 多个工具多条路,那么本文将介绍追踪分析利器 introspy 。
好想用 doxygen 画 iOS app 的 class 继承关系。 有没有比 class-dump-z 更直观的分析工具?利器 iNalyzer 隆重登场~iNalyzer 的安装在 iPhone 端:1)进入 cydia 添加源 http://appsec-labs.
在 iOS 安全攻防(十一):Hack实战——探究支付宝 app 手势密码中,介绍了如何利用 gdb 分析 app ,确定了支付宝 app 的手势密码格式为字符串,9 个点分别对应 123456789。在 iOS 安全攻防(十二):iOS7 的动态库注入中,介绍了如果利用越狱大神们为我们开辟的 iOS7 动态库注入方法。 本文将继续深入 hack 实战,hook 支付宝手势密码校验操作,欺骗其通过任意手势输入。
对于敏感数据,我们不希望长时间放在内存中,而希望使用完后立即就被释放掉。 但是不管是 ARC 还是 MRC,自动释放池也有轮循工作周期,我们都无法控制内存数据被擦除的准确时间,让 hackers 们有机可乘。本文介绍一个小技巧——及时数据擦除。
iOS 系统不断升级,结构不断调整,所以我们可以利用的动态库注入方法也根据系统版本的不同而不同。 在此之前,我们可以利用环境变量 DYLD_INSERT_LIBRARY 来添加动态库,iOS7 被成功越狱后,我们需要自己去探索实践 iOS7 动态库注入的方式。 本文将在 iOS7.0.
关注时代Java