#android #gui #design #drawing https://t.me/AndroidDevCn/184450
https://t.me/AndroidDevCn/184426
Activity 透明模糊背景 4.0 删了,新 RenderEffect 可以作用于 View 但需要 API S 🌚
iseki:
请教下群友们,想弄个毛玻璃activity…但是完全没想明白咋弄🙈
不是…我是说…半透明的活动,背景毛玻璃🙈
找了半天一个扭曲的实现是截屏+模糊🙈不想这么扭曲
Ghost Flying:
你可以渲染到 SurfaceTexture backed 的 virtual display 上,然后用 OpenGL 加滤镜贴主屏,然后透传触摸事件(
iseki:
不知道Android咋合成的,要是依次在一个表面上画所有activity,那应该行吧
Ghost Flying:
就是多个 window 当成 layer 来合成
题外话, #Android #marker glide #build https://t.me/AndroidDevCn/184384
https://t.me/AndroidDevCn/184426
Activity 透明模糊背景 4.0 删了,新 RenderEffect 可以作用于 View 但需要 API S 🌚
iseki:
请教下群友们,想弄个毛玻璃activity…但是完全没想明白咋弄🙈
不是…我是说…半透明的活动,背景毛玻璃🙈
找了半天一个扭曲的实现是截屏+模糊🙈不想这么扭曲
Ghost Flying:
你可以渲染到 SurfaceTexture backed 的 virtual display 上,然后用 OpenGL 加滤镜贴主屏,然后透传触摸事件(
iseki:
不知道Android咋合成的,要是依次在一个表面上画所有activity,那应该行吧
Ghost Flying:
就是多个 window 当成 layer 来合成
题外话, #Android #marker glide #build https://t.me/AndroidDevCn/184384
Telegram
duangsuse in [CN] Android Dev
渲染到位图然后加滤镜当背景…… 为什么要传事件呢🤔
半透明活动应该不可能拿到活动后的背景吧,用户隐私呢
噢这么说应该是两个活动都你 app 的,然后前者直接截自己图加滤镜贴上面装毛玻璃,另外一个活动 UX?😳
这种一般都是 modal 对话框,触摸需求没有吧
半透明活动应该不可能拿到活动后的背景吧,用户隐私呢
噢这么说应该是两个活动都你 app 的,然后前者直接截自己图加滤镜贴上面装毛玻璃,另外一个活动 UX?😳
这种一般都是 modal 对话框,触摸需求没有吧
duangsuse::Echo
为了避免被认为是在指点江山我就简单 PoC 一下,真的不需要十行代码。 毕竟这个「反破解手段」门槛也太低了,只需改动 .h 文件&重编译,其它都自动兼容了。 而加密 bytecode 的各种方法全都逃不过内存 dump ,因为「原原本本」的程序文件是虚拟机要求的,总是要还原。 hook 一下虚拟机的 load() 即 luaZ_undump() 就都出来了,代码保护唯一有效的是削除命名标识符的本义,或者对程序做些预处理和切分什么的(对这些,基于符号执行的 smalivm 类反混工具也能消除),但是大部分有「产权保护」意识的人…
刚才写了一大篇都是理论,也是因为我低估了问题的麻烦度在手机上写了大半天…… 🙊 确实测试还是需要的。
嘛,除了
也是我一开始就没从要逆向谁的应用的角度来想🌝,没去研究不用 luac 怎么得字节码。 可方便了
过会我也不会提供魔改反编译器或者 .luac 文件的辅助程序什么的,正确的做法是魔改 unluac 扩展支持加载 json 配置
https://www.lua.org/manual/5.4/manual.html#pdf-file:read #Lua 的 io file 用的 lines() read("n") "a" "l" fmtstr ,真的很难猜中啊 🌚
文章里也写了 hexdump diff 本来就可以拿 iter if == 替换 😅思维定势 不过也是因为我面向 array binstruct 了
这里只是 PoC ,没有 LuaS 头的兼容性和 size 定义的问题,那个 Berd 写过
https://github.com/fengberd/xLuaDumper/blob/master/xLuaDumper/opcode.lua
loadkx, extraarg, testset 应该是优化指令🤔 反正这里不必是全集,闭包 upvalue 的没问题就行。
对应表:
当然如果有 opnames 可以 re-associateBy 也即
#code https://gist.github.com/duangsuse/90366621af2d206867496f7eb1e42438 写这里 🌝 竟然花了这么久
那个用来自动重排 opcodes 的脚本实在是太难看了,虽然我努力在写简单…… 毕竟是在处理 C 源代码 🤪
真的没问题吗
#Android #net 还看到了这个 https://t.me/dsuses/4769
嘛,除了
luac wtf.lua 其实也可以这样拿到字节码去对照(毕竟 liblua 是带 luaC_ luaU_ 编译器的,刚刚也说了 lua luac 只是 CLI 前端, liblua 才是本体)也是我一开始就没从要逆向谁的应用的角度来想🌝,没去研究不用 luac 怎么得字节码。 可方便了
过会我也不会提供魔改反编译器或者 .luac 文件的辅助程序什么的,正确的做法是魔改 unluac 扩展支持加载 json 配置
https://www.lua.org/manual/5.4/manual.html#pdf-file:read #Lua 的 io file 用的 lines() read("n") "a" "l" fmtstr ,真的很难猜中啊 🌚
table.concat({1,2,3}, "") 对 iter 不起效;不过我突然发现 dump() 其实要 function... 要靠 eval 类接口了function codeobj()
-- 用到几乎所有 opcode 的程序体
end
io.open("code.luac", "wb"):write(string.dump(codeobj)) 文章里也写了 hexdump diff 本来就可以拿 iter if == 替换 😅思维定势 不过也是因为我面向 array binstruct 了
这里只是 PoC ,没有 LuaS 头的兼容性和 size 定义的问题,那个 Berd 写过
https://github.com/fengberd/xLuaDumper/blob/master/xLuaDumper/opcode.lua
loadkx, extraarg, testset 应该是优化指令🤔 反正这里不必是全集,闭包 upvalue 的没问题就行。
io.open("o.luac","wb"):write(string.dump(loadfile("a.lua")))
可以用 https://github.com/viruscamp/luadec/blob/master/ChunkSpy/ChunkSpy53.lua 看看,报错就改它的 config 。好了是这样。对应表:
import struct
def mask1(n): return sum([1<<i for i in range(n)])
def readOpcodes(f, nbit=7, fmt="<I"): # LE unsigned int
mask = mask1(nbit)
n = f.read()
for _ in range(n): yield f.read(struct.calcsize(fmt))&mask
from sys import argv
def main(args=argv[1:]):
def opcodes(fp): f=open(fp, "rb"); f.seek(46); return readOpcodes(f)
(f, fOrig) = map(insnFile, args)
print({op1:op for op1,op in zip(f, fOrig)}) 当然如果有 opnames 可以 re-associateBy 也即
op1: names[op] 、 names.associateBy { d.keyOf(it.key) } ,不过我觉得那不重要。#code https://gist.github.com/duangsuse/90366621af2d206867496f7eb1e42438 写这里 🌝 竟然花了这么久
那个用来自动重排 opcodes 的脚本实在是太难看了,虽然我努力在写简单…… 毕竟是在处理 C 源代码 🤪
真的没问题吗
#Android #net 还看到了这个 https://t.me/dsuses/4769
GitHub
fengberd/xLuaDumper
Load xlua.dll and corresponding lua5X.dll to dump luac for a script - fengberd/xLuaDumper
一看到 Lua 就想到一些过去的事情。 以为自己有能力了,其实还是没有啊
其实 ParserKt 也还是没好啊,其实我也还是写不出 Binary AXML 的序列化啊,其实我也还是没有写一门可以用的 JVM 语言啊,其实我也还是不会写编译器啊,更别说带 native 后端的完整东西呢
如果真的能做到,又是怎么样的情景了呢。
还是想要努力一点啊,
铝板会写五子棋规则带 AI ,我的贪吃蛇连直线都不会选
Yuuta 的 MC 能在 tgbot 直播,我连 curl 都不会用
Berd 的 js 反混淆器能处理多种模式,我连正经的编译器都没写过,讽刺的是人家压根是 PHP+JS 主职运维,但是整体就是比你强,连语法工具都能随性使用
iseki 的 vert.x 经验和 codegen 的意识是我未曾试过的
@AndroidDevCN 的 Ghost 和 Rikka 是对自己的强大默不作声的聚聚
这些都还不是算法大佬,要是算法大佬又怎么能比呢…… 😢
可是一些事情并不是很努力很用功就能做成的吧,所谓「天赋」的这种东西,未曾拥有,是「觉悟」无法弥补的吧。
其实 ParserKt 也还是没好啊,其实我也还是写不出 Binary AXML 的序列化啊,其实我也还是没有写一门可以用的 JVM 语言啊,其实我也还是不会写编译器啊,更别说带 native 后端的完整东西呢
如果真的能做到,又是怎么样的情景了呢。
还是想要努力一点啊,
铝板会写五子棋规则带 AI ,我的贪吃蛇连直线都不会选
Yuuta 的 MC 能在 tgbot 直播,我连 curl 都不会用
Berd 的 js 反混淆器能处理多种模式,我连正经的编译器都没写过,讽刺的是人家压根是 PHP+JS 主职运维,但是整体就是比你强,连语法工具都能随性使用
iseki 的 vert.x 经验和 codegen 的意识是我未曾试过的
@AndroidDevCN 的 Ghost 和 Rikka 是对自己的强大默不作声的聚聚
这些都还不是算法大佬,要是算法大佬又怎么能比呢…… 😢
可是一些事情并不是很努力很用功就能做成的吧,所谓「天赋」的这种东西,未曾拥有,是「觉悟」无法弥补的吧。
Forwarded from duangsues.is_a? SaltedFish
#CG 支持透视变换啦(本来也说是研究 OpenGL 的副产品
- 规范化(子模块) YAML config 和 [a, b] Range ,包括 Input,FFT,Render,Window,FPSPrinter 都参数可调化了
- 支持多个频谱(Spectrum) 信息,虽然我还不清楚新 Input 是怎么改的
- MSAA(Multisample Anti-Aliasing) 选项
- dB 计算和 blackman window 的修正
- 支持选择 fftw 窗口类型
过几天会选择合并改动(当然是全手动了,项目结构改变太多
- 规范化(子模块) YAML config 和 [a, b] Range ,包括 Input,FFT,Render,Window,FPSPrinter 都参数可调化了
- 支持多个频谱(Spectrum) 信息,虽然我还不清楚新 Input 是怎么改的
- MSAA(Multisample Anti-Aliasing) 选项
- dB 计算和 blackman window 的修正
- 支持选择 fftw 窗口类型
过几天会选择合并改动(当然是全手动了,项目结构改变太多
Forwarded from mivik::channels::tech
This media is not supported in your browser
VIEW IN TELEGRAM
支持通过配置文件添加多个渲染对象以及附加透视变换)感觉怪怪的 🤔
#JS 有意思,不过实现方法有点糙了,比较函数式用的 new URL .hostname 去累积,还有 then 来支持 await,既有 URL 上方法我觉得.. String 就好吧 🤔 我第一直觉大概是副作用,用 www 层的变量吧…… 想的单线程 其实这累积/重置判断是可行的。可那样其实不太好,思维反函数式化了吗?
Forwarded from &'a ::rynco::UntitledChannel (Rynco Maekawa)
Forwarded from AlPlank (Al Pt)
https://github.com/vvviperrr/SimpleRT
反向 USB 网络共享方案(当年MIUI什么的都有但是现在没有了)
反向 USB 网络共享方案(当年MIUI什么的都有但是现在没有了)
GitHub
GitHub - robinpaulson/SimpleRT: Simple Reverse Tethering utility for Android
Simple Reverse Tethering utility for Android. Contribute to robinpaulson/SimpleRT development by creating an account on GitHub.
Forwarded from 维生素E|经济学哲学知识分享播客 (V E)
#重构互联网生活形式
分享一个可能业内人士都知道但是很恐怖的事
bilibili的营销系统为了给客户(也就是广告主)提供用户精准画像,收集了用户大量信息,其中,bilibili这个app利用“相互唤醒”的功能收集了用户安装的app,截图是b站的营销后台,你可以看到某一个关键词的画像人群中,拥有#v2rayng 的比例相当的高,这软件干啥用的懂得都懂。
也就是说如果你有很多行为警察想抓你,去b站找营销数据就知道了,这和通过“购买避孕套数量精准定位失足妇女”有异曲同工之妙,妙不妙?
但其实问题还不是你做了什么不见得人的事会被发现,问题是你的用户行为数据就通过这种形式被精确都置换成了钱。就算这个数据bilibili不应该获取到
分享一个可能业内人士都知道但是很恐怖的事
bilibili的营销系统为了给客户(也就是广告主)提供用户精准画像,收集了用户大量信息,其中,bilibili这个app利用“相互唤醒”的功能收集了用户安装的app,截图是b站的营销后台,你可以看到某一个关键词的画像人群中,拥有#v2rayng 的比例相当的高,这软件干啥用的懂得都懂。
也就是说如果你有很多行为警察想抓你,去b站找营销数据就知道了,这和通过“购买避孕套数量精准定位失足妇女”有异曲同工之妙,妙不妙?
但其实问题还不是你做了什么不见得人的事会被发现,问题是你的用户行为数据就通过这种形式被精确都置换成了钱。就算这个数据bilibili不应该获取到
Forwarded from RWTG9Y4's STDOUT
每日去世小知识:
Linux 下在 tmpfs 里自动创建目录并不需要通过使用这些目录的程序来实现,而可以在 /usr/lib/tmpfiles.d/ 建一个配置文件来搞定
比如 php-fpm 如果想用 /var/run/php-fpm/xxxx.sock 来整理一堆乱七八糟的 sock 就可以写一行 d /var/run/php-fpm 0755 root root
Linux 下在 tmpfs 里自动创建目录并不需要通过使用这些目录的程序来实现,而可以在 /usr/lib/tmpfiles.d/ 建一个配置文件来搞定
比如 php-fpm 如果想用 /var/run/php-fpm/xxxx.sock 来整理一堆乱七八糟的 sock 就可以写一行 d /var/run/php-fpm 0755 root root