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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
#OI #CS #Low #China

同意,严重怀疑是使用的排版系统有很大毛病,每次很多中文书,代码示例的空格都有莫名缺失...
Forwarded from 爱学习的小天才 (今天你努力学习了吗?)
同学问我“为啥我完全抄书上的编译还是报错啊” 算是知道谭浩强有多烂了。立即远离qqqqxxx
Forwarded from 爱学习的小天才 (今天你努力学习了吗?)
神他妈 charch
Forwarded from 爱学习的小天才 (Ben Pig Chu // v20.8)
除了charch以外,scanf直接%s是有安全隐患的,可以直接构造输入进行缓冲区溢出……
Forwarded from 爱学习的小天才 (yv | 低端人口 | AS25)
谭死了
Forwarded from 爱学习的小天才 (yv | 低端人口 | AS25)
既然都用 fgetc 输入字符了 用 fgets 输入文件名会死嘛((
那么呢,每周回家都有每周的任务,要不然会非常无聊 #life #tech #dev #daily #Learn

#Java
每次呢看的书好像比较多,又都是轮流转结果可能最后一周完了枚举不出来自己看了什么书比较尴尬,大概是操作系统和嵌入式的,JVM 的也有,但大概是记住了吧。

📚 最近会开始掺杂一些文化课的书学习,由于 CS 的书看的比较多我发现自己的智商和认知理解至于记忆能力都有很大的提升(也可能是年龄关系,目前大概是 17 岁吧,和某 GAN(生成式对抗神经网络,14 年的)算法的 19 岁美国大佬少年还差两年,逃,当然和某些 17 岁就上博士的奇幻人生就比不了了)
主要的原因是有时候看 #CS/IT 系的书比较累

并且愿意尝试补习一下数学,数学里解析几何暂时还有点难理解,其他的代数问题大概都好,因为我现在也稍微有点工程数据结构算法分析能力。
之前一直觉得很难看的数学公式式的表达方式突然觉得没有那么难看了,觉得很自然,也有兴趣理解他们所表示的含义。

这周今天大概就是专门讲讲 r2 x86 架构逆向工程和 #Android Dalvik/Native 逆向工程顺便混杂一点信息工程理论、编译原理什么的,因为我不得不使笔记记录几乎停止,要不然的确有队爆的可能(跑)
#Book 顺便将会发点书单什么的(跑),当然之前我有资料单,不过很早之前了,你们可以自己在文件里面找(皮)
总之就四个字:逆向工程
逆向工程
逆向工程
逆向工程(

(我们可以 r2 - (malloc 512 bytes)
w 逆向工程
pr 3*4
(跑,因为我还不怎么会 r2lang,不知道循环怎么弄,他们那个蛮 #Unix-style 的,就是一切皆大部分可打印字符串,包括 ESIL(Evaluatable Strings Intermidiate Language)都是蛮像 Brainf**k 的字符串语言)

(出人意料吗?很多后端不是没有做前端的能力,比如 r2 的主要开发者 @pancake 就既写 CLI 的 Visual Viewer 也写 HTML
(讲道理,我觉得 Qt 的桌面开发者可能技术反而比 Android Views SDK 的要高

当然密码学之类的是不涉及的,如何解决别人反逆向工程(这里是说,那种高等 native 后端程序员的代码保护方法(比如 false disassembly 也即『花指令』),不是 JVM 开发者或者 Lua 这种托管给别人虚拟机运行的那种,而且不是不会去考虑什么指针不指针内存不内存分页不分页线程不线程分配不分配阻塞不阻塞堆不堆栈不栈动态链接不动态链接的什么混淆压缩然后用某某公司团队或者个人的加固工具『加固』『加密』(然后运行时类加载、虚拟机加载的时候解密载入内存,最后被人扫 file magic 再内存 dump 出来)的那种,不是内建虚拟机什么的,当然内建虚拟机解释不是说就不能 hack 了,记住所有程序逻辑都在你的机器上执行)也是不涉及的,目标是入门和简单的使用,以及给你一个运行时的视角,使你基本可以进行软件分析什么的(

#talk #backend #OS #PL #Sysadmin #CS
(这里底层素质的优势就显现出来了,虽然底层知识并不特殊,但它能给你更广阔的视角,而不是局限在应用的 Resources、Dalvik EXecutable、JNI 库接口和 HTTP 协议那层)

(说到这里忍不住感叹一下,现在又有多少开发者看得到 IL、汇编层面的东西?都是一群只知混淆处理模糊名称算法的,而且自己还不一定会写,自己连自己平台编译完后生成的东西文件结构都不知道的多的去了...)
(当然,这里能写 Java Annotation Processor 程度能力的自然也是明白人了,至少他们有学习能力吧?至少透过 Java 代码文本看到 AST 了吧?)
(好吧,AST、PSI(就是 JB 的 AST)什么的其实也是基本技能,编译优化那才是大佬... 什么逃逸分析、指针别名、代数化简指令合并、公共子表达式消除、向量化、积极虚方法内联的复杂算法...)
(那你这么说 ANN 那群 AI 开发者不是更 dalao 了么?(也不一定(现在编译优化都在用人工智能系算法了么?(启发式至少有吧
(成天批判术语... 其实还是躲不开吧,我所批判的大概是知识层次浅但是不知道自己知识层次浅的那些开发者吧...
(你的意思是你是大佬?(对不起我没有这个意思,我,duangsuse,菜鸡,菜爆了,啥算法都不会写,最讨厌图算法和动态规划(跑
(当然诸如 @RikkaW 这种 C++ 大佬自然也是大佬了(吐槽:有什么必然联系么?)
(当然,给编译原理的大佬们澄明一下,我不是带坏小白,编译是个非常抽象的翻译过程,不一定非得序列化生成文件存盘的,我只是想说明一个常用模式)

(最后:radare2 这种灭天地的逆向工程分析框架才是真理啊!世界上最好的『二进制编辑器、扇区编辑器、系统 I/O 工具、二进制可视化分析工具(like bindiff、base conversion)、反汇编器/JIT 替换汇编器、Shellcode 工具、逆向代码分析器、动态静态调试器、解析器』而且非常『可扩展、可移植、可嵌入』

(总结:Cross-platform unix-like multi-architecture reverse engineering framework and commandline toolchain for security/forensics. wow. debug.exe(MSDOS) for the 21ₛₜ century

(最后:真正的无知不是知识匮乏,你看我以前那么匮乏现在不都好很多了么?都是靠积累学习思考实践的,没有本本我能做到这么快吗?
(吐槽:你又飘了,菜鸡 (回:你的意思是我给 Echo 加了那么多 admin,随便他们发广播,可是他们没一个人评价我的广播... (不过,羽毛 @kodamasakuno 你不评价吗...)

(就是说,至少和那些专科高中的比,我学得很快了吧?不行吗?至少我是在身边完全没有电脑的情况下看书自学的,而且学的还不是应用层的东西,,, 而且我有做框架的能力他们只有用框架的份... 而且我会设计不那么线性一点的算法... 不是挺好么?而且我也会 #CG 画画... 而且我可能会写地图生成器这种随机自动生成的算法... 而且我有实用的数学和逻辑学基础.... 比方说... 呃... 偏序理论?(不会)好吧... well done...

(最后再澄明一下 #disclaimer 我真的真的不针对任何人,因为大家都是这样的,不要对号入座)

(如果要把 Lua 开发者(不是 Androlua 这种)的综合技术素质和 JVM 开发者比的话,我一般觉得 Lua 开发者的素质更好,理由是知道 #Lua 的人一般都会写 #C/C++,不是把 C/C++ 当成 Java 写的那种))

JVM 平台的一些东西可能也讲一下,如果顺手的话,可能明天也要写个 Android 应用 Reflector,尝试提供一个 Dalvik 反射类信息获取 API 的前端,模块化面向接口设计方便扩展。(别喷什么低级技能之类的...

其实每次学到的东西比较多,甚至 Android 开发上的也有(主要是带手机去学校,看一些 Androlua 开发手册上的有点 Android/Java API 使用讲解),只是知识不系统。可是,现在又有几个 Android 开发者的知识真正是系统的呢?(笑)不过是经验之谈而已吧。只是单单靠着自己本来的能力学,学到的知识基本都是 Implicit 的,你控制不了它,你『有那么一点点感觉』但『又的确不能说出它是什么』,这样弄了两三年工程发现都是自己作为搜索引擎和模式识别机器写出的代码,比较线性比较模式化,而且除了可能的名利没有什么太大的理论上的收获,可能也会比较尴尬(笑),当然我之前是不知道有所谓的理论的,我眼里只有应用编程。只有看代码看文档写代码,当然所谓学习其实也不过如此嘛。只是能看破封装的开销有点大了,不如哪怕自己的代码不那么 parallelism 也好(愉悦即可,什么留给后端吧... 反正各种线程同步、什么内核模式用户模式、同步块原子操作什么的都...

JVM 『著名』的双检锁技术(Double-checked Locking,DCL,一种用来解决 singleton 单件实例对象模式线程竞争问题的方案,虽然比较慢)都不知道有没有 Android Developer 会,大概是只知异步不懂并发了吧... 包装啊包装... 万能的包装... 万能的社区库... JMM(Java 内存模型)那(一 JVM 书)讲的什么 store、assign 和 write 这几个语义几乎一样的词用起来总是弄不清楚... 缓存同步啊缓存同步... 不会啊... ...

java.util.concurrent 这个包存不存在都不知道有没有人知道呢,或许(笑)
duangsuse::Echo
那么呢,每周回家都有每周的任务,要不然会非常无聊 #life #tech #dev #daily #Learn #Java 每次呢看的书好像比较多,又都是轮流转结果可能最后一周完了枚举不出来自己看了什么书比较尴尬,大概是操作系统和嵌入式的,JVM 的也有,但大概是记住了吧。 📚 最近会开始掺杂一些文化课的书学习,由于 CS 的书看的比较多我发现自己的智商和认知理解至于记忆能力都有很大的提升(也可能是年龄关系,目前大概是 17 岁吧,和某 GAN(生成式对抗神经网络,14 年的)算法的 19 岁美国大佬少年还差两年,逃,当然和某些…
今天尝试 r2 /bin/yes 了一下,最后除了找到了那个 'y' 字符之外就没啥了,调试的时候就很失败... r2 的模拟执行和实际 rarun 调试都不行,rarun 在打断点的时候会 unmapped location,让人感觉好像是过分的动态链接...

ESIL 调试没试过,但模拟执行都不行,Invalid instruction

反正就是我写了很多 rlang 命令,比如 i*d*p*v*a* 什么的,结果只是没有效果... 我不知道自己在干什么

反正很失败就是了,但我要努力做哪怕是让自己觉得失败的事情,失败是成功之母,学习如逆水行舟不进则退,害怕失败意味着技术止步不前。

CLI 的最完整,但动态分析老是有问题,甚至连 main 上断点都做不到
Cutter 的前端命令行都感觉有问题,一些命令没法用
Web 前端的也有问题,有时候 color escape 还还算不了

https://github.com/coreutils/coreutils/blob/master/src/yes.c
源代码,我一直以为没有那么复杂的... 其实非常复杂,不只是 for (;;) { putchar('y'); } 而已

明天再弄自己那个吧...

嘛,今天晚上再听点歌,前途似海来日方长,第二天原顺序执行,睡觉去喽~
#recommended #javascript #greasyMonkey #Firefox
豆瓣电影海报原图直接看.user.js

这个是直接根据链接规律手算裸图链接的
duangsuse::Echo
今天尝试 r2 /bin/yes 了一下,最后除了找到了那个 'y' 字符之外就没啥了,调试的时候就很失败... r2 的模拟执行和实际 rarun 调试都不行,rarun 在打断点的时候会 unmapped location,让人感觉好像是过分的动态链接... ESIL 调试没试过,但模拟执行都不行,Invalid instruction 反正就是我写了很多 rlang 命令,比如 i*、d*、p*、v*、a* 什么的,结果只是没有效果... 我不知道自己在干什么 反正很失败就是了,但我要努力做哪…
『当一个人发现自己已经不需要学习即通晓万物的时候,他的技术造诣就危险了』
『当一个人觉得自己是天才,天资异于常人但又不是经过客观评价而得出结论的时候,他就很难达到比较高的技术水平』
『当一个人会对别人的改进性意见产生负面情绪时,至少这表明他得独自完成改动枚举的过程』

『当你一直取得成功而从未失败的时候,你就应该静下心来反省,好好考虑是不是你做的事情太简单太机械化了』

(固定句式,那个『他』当然是上文里的『那个人』喽,可惜我在考虑解析几何的时候没有这种理解速度...
(当然这个不涉及道德上的问题,纯技术性的

(其实,我觉得很奇怪,当然为了减少误会,我必须再次澄清一下,虽然貌似是针对某个人的(因为我确乎是根据自己的经历编造了几个,难免的),但其实我没有特殊的意思,只是泛泛的说一个群体而已。我相信这种人平时还是能遇到的

而对于 duangsuse 这种偶尔有些崩坏的而且不是天才而且其实身体条件未必够的人来说,首先的任务应该是考虑如何让自己正常活下去,再是考虑别的事情... 😶
duangsuse::Echo
接下来可以分析 BEL 具体是如何优化的(因为已经实现了 BEL,并且代码别无二致) 我们的 BEL 公式 LLVM 优化后是这样的: BEL: # @BEL lea eax, [4*rdi - 4] cdqe imul rax, rax, 1431655766 mov rcx, rax shr rcx, 63 …
曾经突然能理解 x86 CDEF 汇编调用栈维护
并且写出自己第一个真正意义上物理机线性 0~2 地址代码的时候

仿佛已经是在脑后,成为过去

工程好像没有时间,好像又不想工程
学的技能好像没有学...

永远就是这样的吗?每次攻克一个自己所谓的『难关』

增加一个新的技能,增加一组新的知识,增加一个新的知识系统
好像完成之后,就成为理所当然一样,成为自己下一个证明的既成条件

好像爬山一样,的确在往上爬,可是,有没有爬了一段后,突然忘记自己所在的高度呢?
... 最大的问题是自己都在学了什么东西?自己现在会什么东西?好像一个 WeakSet 集合,只能使用 contains(_) 方法(就是数学上的 A∍a, 中间这个符号叫 containsAsMember
连遍历都难啊 into_iter() -> !
我学了什么?What have I learnt?

还是和自己的那些同学们一样,或许,他们也不知道吧... 或许有人知道自己学会了什么... 只是因为自学所以这样吗?所以我学到了什么呢?我是什么水平呢?可能是小应用都不会写的水平吧...
他们总是一年一年的玩各种新的手机游戏... 对了,我还不会 GLSL... 我不知道 vec2vec4 是什么关系... color 又是什么...

其实我这段时间应该一直都是在打所谓的理解力基础,有了基础大概做什么都容易一些吧... 大概 😶
https://ice1000.org/2018/12/08/SomeTweaks/

#blog #recommended #yearPassed

顺推隔壁的跨年笔记,当然,我不如他,所以,我都不知道我学了什么,PLT 反正也就是入门刚刚而已,因为我也才知道如何抽象程序逻辑,基本的 operators(+, -, *, /, add, contains, iterator 这种)、primitives(int, long, short)、markers([], *, ref, parametric polymorphic 等) 组合什么的,函数式也才是入门,然后就没有额外资本去学习高级类型系统方面的知识什么的

谢谢各位读者对这个幼稚的博客的关注

今年的跨年笔记我晚点写,因为今年真的... 很乱,真的... 学了很多,我尽可能枚举,利用 Telegram 频道的历史记录,这是我自己的感觉。欢迎喷啊
那么我明年的梦想是重新开一个博客,名字我都想好了,就叫 "IJKTree"

当然也建议大家都发一下自己的跨年笔记什么的(不要不写啊
#statement #TeX 顺便说一下,其实 #Microsoft Office Word 系列排版也很好的,TeX 某些扩展包可能排起来都有数学公式渲染问题,我上次那个 foo.pdf 的根号就不对
duangsuse::Echo
加油! #life #dev
(吐槽,即使在与理论系的巨佬们差距如此之大的情况下也要如此逞强吗?
(回复,巨佬尽管是巨佬,可能几年前也不过是菜鸡,我和巨佬之间... 还差几年的努力