Category Archives: Hack Space

Theos Hook Objective-C classes / methods with Unicode Characters

于是今天看到有人在问使用 THEOS 来 hook 带有汉字的 Objective-C 的方法时会有类似如下的报错。

$ make
> Making all for tweak UnicodeHook…
==> Preprocessing Tweak.xm…
==> Compiling Tweak.xm (armv7)…
Tweak.xm:3:1: error: missing context for method declaration
- (id)中文方法名 {
^
1 error generated.
THEOS complaints about unicode characters
THEOS complaints about unicode characters

于是研究了 THEOS 的源代码,给出了一个简单的解决办法,不仅可以 Hook 带有汉字的方法,带有日文、阿拉伯文等等的方法 / Objective-C 类,只要这些 identifier 在 Objective-C 的语法规则中被认可,那就都可以被 Hook。而且在写 %group 的时候也可以使用除 ACSII 以外的文字了。

Continue reading Theos Hook Objective-C classes / methods with Unicode Characters

macOS中QQ防消息撤回

macOS下的QQ还是增加了消息撤回功能,稍微研究了一下,只需要Hook一个函数即可。

可以考虑写一个dylib然后附上去,代码如下。然后至于说是用DYLD_INSERT_LIBRARIES这个环境变量,还是说直接改load_commands就看个人喜好了,这里不展开写。

#import <Foundation/Foundation.h>
#import <objc/runtime.h>

void handleRecallNotifyIsOnline(id, SEL, void *, BOOL) {}

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"

static void __attribute__((constructor)) initialize(void) {
    method_setImplementation(class_getInstanceMethod(NSClassFromString(@"QQMessageRevokeEngine"), @selector(handleRecallNotify:isOnline:)), (IMP)&handleRecallNotifyIsOnline);
}

#pragma clang diagnostic pop

解读STL里的std::sort函数

本文是个人对 C++ 标准库里的 std::sort 函数的分析、解读。鉴于个人能力有限,文中若有错误、疏漏还请各位来打我啊多多指教QAQ

当然,各家编译器的实现可能不同,这里我是用的是 LLVM 的实现。

LLVM > libcxx release 37 > algorithm

即 Xcode 8.2.1 中所使用的版本。其实在某一行上的实现方式有微小的不同,但是实际上是等价的。而且那一行也不涉及到这里讨论的 std::sort 函数。

trivial difference
trivial difference

这篇 post 由以下几个部分构成

Continue reading 解读STL里的std::sort函数

Jetson TX1的散热风扇问题

于是之前在Jetson TX1上玩耍的时候,发现貌似不论温度有多高,散热风扇都不会启动,也许是Nvidia对自己的微型核弹能承受的温度上限很有信心吧,不过为了能让这个微型核弹晚几年再炸,就搞了个监控CPU温度然后自动控制风扇的daemon。

整体思路就是通过读取 /sys/class/thermal/thermal_zone0/temp 判断温度,然后在 /sys/kernel/debug/tegra_fan/target_pwm 写入散热风扇的pwm值。然后本着一切从简的原则,直接用perl写了。

Continue reading Jetson TX1的散热风扇问题

来开始用Touch Bar吧/

前两周住院用不了电脑,看到新的Touch Bar觉得还是很有趣的,一种新的交互方式,虽然暂时还没有接触到实物,but, why not?

于是今天就顺手写了个Touch Bar的小工具——CPUBar(虽然并没有什么用www

CPUBar可以让你在Touch Bar上开/关任意slave CPU core(我相信没人会想关掉master CPU core的)

cpubar-1

cpubar-2

下载CPUBar~

以下则是在Objective-C中使用Touch Bar的例子/

Continue reading 来开始用Touch Bar吧/

在已越狱的iOS设备上获取支付宝的支付密码

update: 2016-11-04

上周已经提交给了AFSRC,所以不会放出源代码了。新版的支付宝还能不能拿到,我还没有试,最近因为私人原因,没空做支付宝的研究。

 

昨天晚上重新开始玩越狱插件之后,就把支付宝的支付密码破了

尽管支付宝在保护用户支付密码时下了不少心思,但是目前的算法的确有规律可循。

演示视频如下,(为了录这个视频,我支付宝都被临时锁定了233)

当然,这次的源码不会公开,至少短时间内不会公开。不过还是先把其他的内容放到GitHub上,DamnAlipayAgain

Jailbreak Development please go easy on me

好久没有做过iOS上的越狱开发了,昨天偶然看到Cee说支付宝越狱状态下 Reveal 都没法主动加载进去。

然后看了一下,果然是加了个__RESTRICT,然后手动改了下Segment和Section区,丢进设备跑了一下,就可以加载Reveal了。几年前的支付宝还可以随意玩耍,甚至获取手势密码233(DamnAlipay)

update: 现在也还是可以自由的获取233,详见后文

记得这个__RESTRICT的手法,国内首先使用的是美团,后来很多App就都用上了,在一定程度上防住了第三方对自己App的注入。

后来就干脆写了个小工具(早就想写了,不过懒癌晚期233),去掉MachO文件里的__RESTRICT,顺便也把ASLR关了,某些情况下,用lldb调试时会很方便。

screenshot-injectable-3

代码在injectable

Continue reading Jailbreak Development please go easy on me

在外网访问家里的树莓派下载机

最近用上了Aria2作为下载器,一开始是在笔记本上装的Aria2,但是需要较长时间的下载任务就得保持笔记本一直开着,于是就在树莓派上装了Aria2。在Mac端的管理用 Maria / YAAW都挺不错。

然而不在家里的时候,要想添加下载任务或是查看进度似乎比较麻烦,曾经想要写个Aria2下载完成后发邮件的东西,但是觉得太麻烦;又想用node.js在公网的服务器上给家里的树莓派做个代理,但是自己写这样的,好像……更复杂了啊……

后来想起了以前做iOS越狱开发时的SSH over USB,用SSH做类似的forwarding应该能达到要求。当然,这需要有一台可以在公网访问的服务器。

Continue reading 在外网访问家里的树莓派下载机