duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
Forwarded from dnaugsuz
这个本质就是如何把代码写简单,做到高复用并且突出程序与数据的照应性。 以这种心态就没有任何教条了,也不记得任何具体技术的名称;只有子程序的输入和数据之结构的变化才是唯一所见的事。
因为只在乎输入和输出之间所经历必须的过程和代码复用,只用最基础的算法和函数式,自然就没有稀奇古怪的实现方式和设计特性了。
Forwarded from dnaugsuz
嘛 我说的 codegen 大概是指同级语言,以减少冗余为目的的 cg,MDHD 说的是高级到低级的铺平、序列化 codegen …… 这就完全不一样了
减冗余的本质上是宏,不管理或没有上下文,只是一句话代表几句话,顶多查个全局表这样。
真的编译器 asm ,必须实现 if switch while break 基础控制流甚至 && 等惰性短路计算表达式 解析器还要支持错误列表化,挺麻烦的。

现在还是一想到就头疼,流解析组合子并不能直白便利地解决 keyword 和跳空格、计行号的问题,要在 Java/JS 里写字典树和 sourceLoc 真是最痛苦的(当然对类 C 语言读 map entries 都可以 但是比较不智能)

不过抛开控制流的翻译和层叠作用域的问题,本质上就和同级语言的翻译差不多了,四则计算指令、字面量、值引用、值输出一对应一铺平生成,并没有多少种情况,其实最小化的编程语言就个 func 个 apply ,实际编译器就是多带些 intrinsic 操作而已。
Forwarded from MĐĦĐ
llvm ir 不是寄存器无限嘛,整成 ssa 然后 builder 自动分配,我学长主要做的就是这个
Forwarded from dnaugsuz
丝毫没有长进的动苏
两三年过去也没见得强多少
还是那个连二进制都不会的辣鸡
而且也没有在编译原理上有所进步
更别提回到 Android 了,被大佬吊着锤 什么都不懂

明明抛弃了这么多,却没有得到什么回报 还是那么的菜
为什么总是有大佬和意外的普通人能做到我不会的事情啊
Forwarded from dnaugsuz
噢……记起来了,是指 add(sub(L(10),L(5)), V(1)) 这种不用显式分配的 l/rhs

用的时候就仿佛是空气一样,不觉得有 SSA Value 这个东西,你一提我还以为是指 builder.alloca() 分配内存呢

不过如果完全不在编译期优化,这种也可以直接翻译成子程序调用…… add 什么的就做成 libcrt (会被打的
Forwarded from dnaugsuz
啊……的确呢
要不然 SSA 要不然用操作数栈,否则指令存储器分配还真是不好解耦合呢

想想以后有机会看看 Lua 的寄存器分配,不过我记得那个实际上在模拟寄存器窗口,还是栈机一样 实机的寄存器一般是有限的
听说 linearscan 分配寄存器很方便,桶染色分配比较优化, 感觉挺麻烦
SSA 图也经常被忘记吧
Forwarded from dnaugsuz
解析器果然是最浅的一层呢,不过也很有用
脱糖&类型检查&翻译通用指令结构的结束
代码生成真正复杂工作的开始

一些时候都没有前后端的区分,只是通过某种处理和顺序写出指令而已 感觉不多写几次很难写好啊……
Forwarded from dnaugsuz
汇编层面的 CPS 会是什么样啊…… 记得 cps 理论是不 return 的,那么就是内联 continu...
不对, CPS 代表好像是 (call-with-current-continuation
Forwarded from dnaugsuz
这么看实现一门编程语言有时很简单有时很难,而难易和语言本身特性量是没有绝对关系的

懂编译原理的人未必对其它领域也很懂,其它领域的人也未必不能在短时间内设计编译器或其它目的的翻译器

完成编译器后的高亮规则也不难完成,其与各种工具的适配也有临时解决方案,所以编译器没有什么独特的地方,就像学算法也不代表能写出好东西?🤔 明白了这件事
原来人是不应该限制自己的编程领域的,不可能一招鲜吃遍天,必须广有涉猎并且也能深究一类问题 才是最好的。
#Android #net #Security #reveng pin 证书 保护服务端客户端通信不被系统信任骚扰

自己包装静态链接的 libcurl 在里面把 pin 证书做好
再使用 HikariObfuscator/Hikari

某10:
getFixedSocketFactory?

我记得我之前干小米的时候 一是干了https://github.com/android-async-http/android-async-http/blob/ca93ab08f63c7adc6743cadb8031b719f4a71e3f/library/src/main/java/com/loopj/android/http/AsyncHttpClient.java#L306

二是干了X509TrustManager

分别对应Loopj 和okhttp3 小米同时用了俩库嗯
Forwarded from 探探
大家好,请问一个问题,你们是怎么防止别人抓包app数据的。
Forwarded from iseki 萍水相逢,相聚是缘|想无痛苦地死
这玩意儿还能防住?只能加下密凑合凑合了
Forwarded from 探探
但是我看了一下,oppo应用商店,一抓包就说网络错误。这种是咋搞的
Forwarded from Rikka
只接受 固定的证书
Forwarded from iseki 萍水相逢,相聚是缘|想无痛苦地死
那就是pin了证书…你要mitm他就炸了
Forwarded from dnaugsuz
啊,所以说 ssl 也挺有用啊,不接系统证书就反 MITM 了,路由器也不能读取
不过其实不管 Java 还是 Native , frida.re 都有脚本解决证书信任问题 😐 感觉这个需求蛮 general 的

抓包好像并不都要设代理,但是换证书是肯定的。
问题是 lsposed 能搞 java , stripped curl ssl 基于开源又容易被搜索吧🤔 要是对方找到相应函数地址就可以 memdump 了

不过说起来只要 webapi Client 做在 Java 就很难解决 偷窥 问题吧😒 URL 要传过去,搞不好人家用别的 HTTP 客户端 replay 一次你就白费心思了
Forwarded from dnaugsuz
是啊,查出 API 什么的利益可以说是足够大,又流行🤔 不会吝啬时间
一般做不完美就选择折中加行代码,少 effort 完事了吧
Forwarded from dnaugsuz
关于 webapi 的封闭化我见过一次,感觉 coolapk.com 的方案也挺有效的,验证 Token 就能从源头上解决问题了。 包尽管抓,反正客户端只能是官方就行🌝

初版是 JNI 黑箱生成 verify token ,后来被盗 load 加了个包名验证
可是后来他们 publish 了一次 debug build ,正巧当时我在看这个,就给 JNI 生成的重写了
GitHub.com/duangsuse/wowcoolapk 😒 不过没有调试符号我敢保证很安全
Forwarded from dnaugsuz
只能说是搞开发的有点心大,真觉得汇编就无懈可击了。忘记20年前老冯诺依曼还说不能用 assembler 呢😒