Forwarded from 羽毛的小白板
IL 归 IL,最终还是要看 JIT 的结果。有些反直觉……
Forwarded from Solidot
前微软实习生指责 Google 破坏微软的浏览器
前微软 Edge 团队软件工程实习生 Joshua Bakita 认为,微软放弃 EdgeHTML 渲染引擎切换到 Chromium 的原因之一是为了跟上 Google 推送到其网站上的一些变化。他认为 Google 的这些改变旨在让其它浏览器在 Google 网站上难以正常工作。非 Chrome 浏览器访问 Google 的部分在线服务时存在问题这已经是众所周知的事实。Bakita 以他在 Edge 浏览器团队的个人经历指出,他们难以跟上 Google 对其网站进行的改变。他举例说,Google 最近在 YouTube 中加入一个隐藏 div,导致 Edge 的硬件加速快速路径失效。他不确定 Google 是否是故意的,但他的许多同事对此确信无疑。他们向 YouTube 询问了隐藏 div 的问题,YouTube 拒绝了删除的请求,但没有给出详细解释。Media
https://www.solidot.org/story?sid=58993
前微软 Edge 团队软件工程实习生 Joshua Bakita 认为,微软放弃 EdgeHTML 渲染引擎切换到 Chromium 的原因之一是为了跟上 Google 推送到其网站上的一些变化。他认为 Google 的这些改变旨在让其它浏览器在 Google 网站上难以正常工作。非 Chrome 浏览器访问 Google 的部分在线服务时存在问题这已经是众所周知的事实。Bakita 以他在 Edge 浏览器团队的个人经历指出,他们难以跟上 Google 对其网站进行的改变。他举例说,Google 最近在 YouTube 中加入一个隐藏 div,导致 Edge 的硬件加速快速路径失效。他不确定 Google 是否是故意的,但他的许多同事对此确信无疑。他们向 YouTube 询问了隐藏 div 的问题,YouTube 拒绝了删除的请求,但没有给出详细解释。Media
https://www.solidot.org/story?sid=58993
Forwarded from 爱学习的小天才 (Ben Pig Chu // v20.8)
除了charch以外,scanf直接%s是有安全隐患的,可以直接构造输入进行缓冲区溢出……
Forwarded from 爱学习的小天才 (yv | 低端人口 | AS25)
既然都用 fgetc 输入字符了 用 fgets 输入文件名会死嘛((
duangsuse::Echo
呃... 因为今天估计错了,然后现在要去上学 #school 所以赶快举个 r2 动态调试的例子来:赶快讲了你们学到了然后我就走的,那个下周说 (C 语言入门难度,真的) 首先我们的程序 #include <stdio.h> #include <stdlib.h> #include <string.h> static char *msg = "duangsuse 菜鸡\n"; int main(int argc, const char **argv) { char *str = malloc(sizeof(msg));…
This media is not supported in your browser
VIEW IN TELEGRAM
那么呢,每周回家都有每周的任务,要不然会非常无聊 #life #tech #dev #daily #Learn
#Java
每次呢看的书好像比较多,又都是轮流转结果可能最后一周完了枚举不出来自己看了什么书比较尴尬,大概是操作系统和嵌入式的,JVM 的也有,但大概是记住了吧。
📚 最近会开始掺杂一些文化课的书学习,由于 CS 的书看的比较多我发现自己的智商和认知理解至于记忆能力都有很大的提升(也可能是年龄关系,目前大概是 17 岁吧,和某 GAN(生成式对抗神经网络,14 年的)算法的 19 岁美国大佬少年还差两年,逃,当然和某些 17 岁就上博士的奇幻人生就比不了了)
主要的原因是有时候看 #CS/IT 系的书比较累
并且愿意尝试补习一下数学,数学里解析几何暂时还有点难理解,其他的代数问题大概都好,因为我现在也稍微有点工程数据结构算法分析能力。
之前一直觉得很难看的数学公式式的表达方式突然觉得没有那么难看了,觉得很自然,也有兴趣理解他们所表示的含义。
这周今天大概就是专门讲讲 r2 x86 架构逆向工程和 #Android Dalvik/Native 逆向工程顺便混杂一点信息工程理论、编译原理什么的,因为我不得不使笔记记录几乎停止,要不然的确有队爆的可能(跑)
#Book 顺便将会发点书单什么的(跑),当然之前我有资料单,不过很早之前了,你们可以自己在文件里面找(皮)
总之就四个字:逆向工程
逆向工程
逆向工程
逆向工程(
(我们可以
(出人意料吗?很多后端不是没有做前端的能力,比如 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++ 大佬自然也是大佬了(吐槽:有什么必然联系么?)
(当然,给编译原理的大佬们澄明一下,我不是带坏小白,编译是个非常抽象的翻译过程,不一定非得序列化生成文件存盘的,我只是想说明一个常用模式)
(最后:
(总结:
(吐槽:你又飘了,菜鸡 (回:你的意思是我给 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
每次呢看的书好像比较多,又都是轮流转结果可能最后一周完了枚举不出来自己看了什么书比较尴尬,大概是操作系统和嵌入式的,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
呃... 因为今天估计错了,然后现在要去上学 #school 所以赶快举个 r2 动态调试的例子来:赶快讲了你们学到了然后我就走的,那个下周说 (C 语言入门难度,真的) 首先我们的程序 #include <stdio.h> #include <stdlib.h> #include <string.h> static char *msg = "duangsuse 菜鸡\n"; int main(int argc, const char **argv) { char *str = malloc(sizeof(msg));…
那么就先写这个 r2 动态调试的简单教程,暂定使用 Markdown
duangsuse::Echo
那么呢,每周回家都有每周的任务,要不然会非常无聊 #life #tech #dev #daily #Learn #Java 每次呢看的书好像比较多,又都是轮流转结果可能最后一周完了枚举不出来自己看了什么书比较尴尬,大概是操作系统和嵌入式的,JVM 的也有,但大概是记住了吧。 📚 最近会开始掺杂一些文化课的书学习,由于 CS 的书看的比较多我发现自己的智商和认知理解至于记忆能力都有很大的提升(也可能是年龄关系,目前大概是 17 岁吧,和某 GAN(生成式对抗神经网络,14 年的)算法的 19 岁美国大佬少年还差两年,逃,当然和某些…
今天尝试
ESIL 调试没试过,但模拟执行都不行,Invalid instruction
反正就是我写了很多 rlang 命令,比如
反正很失败就是了,但我要努力做哪怕是让自己觉得失败的事情,失败是成功之母,学习如逆水行舟不进则退,害怕失败意味着技术止步不前。
CLI 的最完整,但动态分析老是有问题,甚至连
Cutter 的前端命令行都感觉有问题,一些命令没法用
Web 前端的也有问题,有时候 color escape 还还算不了
https://github.com/coreutils/coreutils/blob/master/src/yes.c
源代码,我一直以为没有那么复杂的... 其实非常复杂,不只是
明天再弄自己那个吧...
嘛,今天晚上再听点歌,前途似海来日方长,第二天原顺序执行,睡觉去喽~
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'); } 而已明天再弄自己那个吧...
嘛,今天晚上再听点歌,前途似海来日方长,第二天原顺序执行,睡觉去喽~
GitHub
coreutils/src/yes.c at master · coreutils/coreutils
upstream mirror. Contribute to coreutils/coreutils development by creating an account on GitHub.