拿到vmaddr和ASLR之后,就可以正确计算出Section的内存地址,然后重新写入数据。不过这里为了演示简便,我们直接把解密之后的数据放在了壳程序的代码中,其实这样调试起来也更方便。
Category Archives: Hack Space
iOS DEP研究(2)——获取vmaddr与ASLR
在创建Section之后,我们需要获取该Section的vmaddr和这个外壳程序运行时的ASLR,然后才能正确跳转。
iOS DEP研究(1)——创建Section
将加密的程序放在一个Section中,外壳运行时解密该Section,并执行解密后的程序。
才不是什么黑科技呢,哼哒~
一段时间前就看见某公司的音乐App宣传自己的工程师用黑科技在iOS的锁屏界面添加了一些小功能,昨天晚上又有人提到。
其实这个真不是什么黑科技,是iOS的Public API啊,只不过Apple的文档里对这个API的描述略少,实际中也很少有App使用,于是就被说成黑科技了,说成黑科技有什么好处呢,好处自然多了,特别是对于商业公司。
于是这里就给出一个如何正确使用的例子吧,这个东西才不是什么黑科技呢,哼哒~
自己实现一个malloc
昨天阿里校招有这样一道题:
常常会有频繁申请、释放内存的需求,比如在发送网络报文时,每次都要分配内存以存储报文,等报文发送完成后又需要删除报文。 为了避免频繁的new/delete对系统带来的开销,需要实现一个通用的FreeList机制。使用者总是从free list中分配内存,如果存在没有使用的内存块就直接摘出来使用,如果没有的话再从系统中分配。使用完毕后并不去直接delete该内存块,而是交给FreeList保管。 要求: 1. 实现一个对固定大小内存块进行管理的通用FreeList类,给出定义和实现。要求不能使用STL中的容器类。定义类的接口和实现时注意通用性、健壮性和可测试性。 2. 如果该类的对象可能会被多个thread同时访问,请描述如何怎样保证线程安全。有没有办法在保证线程安全的同时尽可能增大并发度?如果有也请描述你的思路。
坑了5、6个小时终于写好了第一问,不过似乎写出来和要求的不太一样。。。(但是是绝对可用的)
巧用不定参数来保护App
刚才写了如何Hook ObjC的不定参数方法,现在突然有了一个使用不定参数来保护App的想法。
Hook ObjC的不定参数方法
今天群里有朋友问怎么Hook ObjC的不定参数方法,比如NSDictionary的+ [NSDictionary dictionaryWithObjectsAndKeys:]
于是稍微研究了一下,其实和普通的ObjC的Hook差不多的。
QRC与LRC合并
之前坑了QRC格式歌词转LRC格式,那么现在是合并QRC与LRC。貌似也没什么好说的了,就是些文本处理。直接上代码吧。
QRC格式歌词转LRC格式
上一篇post里提到了QQ音乐的QRC歌词,不过其他播放器并不能识别出这个格式,于是只好自己写个转换器了。
iOSOpenDev的补丁~
之前写过为iOSOpenDev增加指定设备端口功能 (English ver. is here),今天在看LPI的时候,书中提到了Linux的内核升级,其中就用了patch来给内核文件打补丁。
这样的方式比起我当时给出的“自己对应目录层级”覆盖文件好多了,于是就当是学习diff和patch的使用方法,做了一个iOSOpenDev的补丁,不过我是按照1.6-2版本的iOSOpenDev做的,其他版本的没有测试。
Usage: sudo gzip -cd iOSOpenDev.patch.gz | patch -p0