duangsuse::Echo
714 subscribers
4.24K photos
127 videos
583 files
6.46K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
#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
duangsuse::Echo
为了避免被认为是在指点江山我就简单 PoC 一下,真的不需要十行代码。 毕竟这个「反破解手段」门槛也太低了,只需改动 .h 文件&重编译,其它都自动兼容了。 而加密 bytecode 的各种方法全都逃不过内存 dump ,因为「原原本本」的程序文件是虚拟机要求的,总是要还原。 hook 一下虚拟机的 load() 即 luaZ_undump() 就都出来了,代码保护唯一有效的是削除命名标识符的本义,或者对程序做些预处理和切分什么的(对这些,基于符号执行的 smalivm 类反混工具也能消除),但是大部分有「产权保护」意识的人…
刚才写了一大篇都是理论,也是因为我低估了问题的麻烦度在手机上写了大半天…… 🙊 确实测试还是需要的。

嘛,除了 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
This media is not supported in your browser
VIEW IN TELEGRAM
一看到 Lua 就想到一些过去的事情。 以为自己有能力了,其实还是没有啊
其实 ParserKt 也还是没好啊,其实我也还是写不出 Binary AXML 的序列化啊,其实我也还是没有写一门可以用的 JVM 语言啊,其实我也还是不会写编译器啊,更别说带 native 后端的完整东西呢
如果真的能做到,又是怎么样的情景了呢。

还是想要努力一点啊,
铝板会写五子棋规则带 AI ,我的贪吃蛇连直线都不会选
Yuuta 的 MC 能在 tgbot 直播,我连 curl 都不会用
Berd 的 js 反混淆器能处理多种模式,我连正经的编译器都没写过,讽刺的是人家压根是 PHP+JS 主职运维,但是整体就是比你强,连语法工具都能随性使用
iseki 的 vert.x 经验和 codegen 的意识是我未曾试过的
@AndroidDevCN 的 Ghost 和 Rikka 是对自己的强大默不作声的聚聚

这些都还不是算法大佬,要是算法大佬又怎么能比呢…… 😢
可是一些事情并不是很努力很用功就能做成的吧,所谓「天赋」的这种东西,未曾拥有,是「觉悟」无法弥补的吧。
#CG 支持透视变换啦(本来也说是研究 OpenGL 的副产品
- 规范化(子模块) 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 层的变量吧…… 想的单线程 其实这累积/重置判断是可行的。可那样其实不太好,思维反函数式化了吗?
图转群,这写法还挺有意思
草, #ce #rust clippy 也太那啥了 #recommend #math
#Android #tools 反向共享? 🤔
#Freedom #net #China #bilibili #Android #Security 🌝 频道主也中招了
#重构互联网生活形式
分享一个可能业内人士都知道但是很恐怖的事
bilibili的营销系统为了给客户(也就是广告主)提供用户精准画像,收集了用户大量信息,其中,bilibili这个app利用“相互唤醒”的功能收集了用户安装的app,截图是b站的营销后台,你可以看到某一个关键词的画像人群中,拥有#v2rayng 的比例相当的高,这软件干啥用的懂得都懂。
也就是说如果你有很多行为警察想抓你,去b站找营销数据就知道了,这和通过“购买避孕套数量精准定位失足妇女”有异曲同工之妙,妙不妙?
但其实问题还不是你做了什么不见得人的事会被发现,问题是你的用户行为数据就通过这种形式被精确都置换成了钱。就算这个数据bilibili不应该获取到
#Haha #YouTube #game 🌝 无脑打广告?🙈
Forwarded from Yuuta 🎀 | clrd enroute
笑死
#Linux #sysadmin #tricks /usr/lib/tmpfiles.d 可以自动创建 /var/run (tmpfs) 的文件权限
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