V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  iofomo  ›  全部回复第 1 页 / 共 1 页
回复总数  14
32 天前
回复了 iofomo 创建的主题 分享发现 空壳产品之路:直面自身的缺点
欢迎体验空壳,官方下载链接:iofomo.com
59 天前
回复了 iofomo 创建的主题 分享创造 空壳产品之路:分身类应用你受够了吗?
@win7pro 大家放心,我们不会接入广告(这或许大家多次被各软件忽略多了),后面的会增加付费功能,但是也不会影响到当前已经限免的功能,请大家放心使用。
59 天前
回复了 iofomo 创建的主题 分享创造 空壳产品之路:分身类应用你受够了吗?
@dapang1221 抱歉,我们应用名字给你带来困惑了,感谢你的关注
59 天前
回复了 iofomo 创建的主题 分享创造 空壳产品之路:分身类应用你受够了吗?
@drymonfidelia 点评很犀利,我们加油
59 天前
回复了 iofomo 创建的主题 分享创造 空壳产品之路:分身类应用你受够了吗?
@StinkyTofus 分析得很专业,所以我们不是基于 VA 的,我们新自研的一个方案,从原理上实现了最少权限的获取
59 天前
回复了 iofomo 创建的主题 分享创造 空壳产品之路:分身类应用你受够了吗?
@xuanlangt 收到,我们正在解决
59 天前
回复了 iofomo 创建的主题 分享创造 空壳产品之路:分身类应用你受够了吗?
@xixiv5 海外版本还在研发
179 天前
回复了 iofomo 创建的主题 Android [ASeeker] Android 源码捞针,服务接口扫描神器
@yippees 我们内部每次系统适配时一直在使用
179 天前
回复了 iofomo 创建的主题 Android [ASeeker] Android 源码捞针,服务接口扫描神器
@StinkyTofus 酷,是的
234 天前
回复了 iofomo 创建的主题 Android [Android] 深入 Binder 拦截
@xingda920813 稳定性还可以,特定场景使用的,用户量巨大的 ToC 应用自然不会作为主功能,通常为辅助的安全检测,数据采集的独立功能,就算异常也不会影响业务
234 天前
回复了 iofomo 创建的主题 Android [Android] 深入 Binder 拦截
@beriru 如果只是想要获得调用方法是可以使用这个全局的,如果需要拿到 Binder 通信来回的数据,并且进行修改,则做不到
234 天前
回复了 iofomo 创建的主题 Android [Android] 深入 Binder 拦截
@beriru
238 天前
回复了 iofomo 创建的主题 Android [Android] 深入 Binder 拦截
@beasonshu 一般容器,沙箱,虚拟化,隐私保护,安全防护等产品会用到,以及研究某些应用使用了那些系统接口的特性功能等
238 天前
回复了 iofomo 创建的主题 Android [Android] 深入 Binder 拦截
@nnegier 是的,你的问题很赞。
一次 Binder 通信数据有最大的 1M 限制( Android 源码默认),如果超过这个大小了,在 Binder 通信中会有多次的数据交互,比如常见的 IPackageManager 的 getInstalledPackages 就会碰到。
这时底层通信拦截的处理办法是:
我们在首次调用的时候 cache 住 binder_object 的 handle ( binder_txn_st* txn 中的 handle ),当本次 binder 通信为结束,但是 Code 为 1 ( FIRST_CALL_TRANSACTION ),接口方法 Code 均大于 1 ( binder_txn_st* txn 中的 Code ),此时匹配 handle 值于之前 cache 的 handle 值是否一致,一致则解析。
如 cache:
unsigned int handle = target_get_binder_obj_ptr(txn);
if (0 < handle) {
TlsCache* poolItem = TlsUtils::getPool();
if (poolItem) {
poolItem->setInt(handle);// TODO save cache
} else {
// TODO cleat
}
}
如:解析
if (token.unequal(__PACKAGE_LENGTH__, __PACKAGE_HASH__)) {
if (FIRST_CALL_TRANSACTION == txn->code) {
TlsCache *tlsPool = TlsUtils::getPool();
if (tlsPool->getInt() == txn->target.handle) {
// TODO
}
}
}
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5793 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 279ms · UTC 01:42 · PVG 09:42 · LAX 17:42 · JFK 20:42
Developed with CodeLauncher
♥ Do have faith in what you're doing.