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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from METO 的涂鸦板
没有分词的敏感词屏蔽
至于么...
太多脏话又怎么样... 有人看得么
神奇的笔记
https://t.me/solidot/5856 现在人都怎么了………
现在来说,OpenJDK 的开发团队可能就是那种『技术疯子』一样的人多一些了。可能不是特别注意自己的语言话都很直,大家工作起来话可能都比较直但大概是没有什么特别的恶意的『如果一个人的技术很差,我们也只能说他技术很差』,OpenJDK 也不是属于前端项目,不是面向大部分人的,也没有必要在工作的时候刻意说话特别文明

不过现在他们都改了,这着实也不错,其实我有时候也在本频道上骂街不知道你们知不知道(
duangsuse::Echo
🐱 Sticker
#Share #Reveng #Backend #Android #Radare2 #Decompiler #PL #CS #recommended
今天也不去完成之前那个跨平台 ABI 移植的问题了,专门研究一下 BEL 本来的定义是如何运行,指令们等价的代码是什么
顺便写出一点调试用的示例 i686 汇编程序试试

顺便推荐动态指令工具 Frida 和反编译器 RetDec,都是跨平台的逆向分析工具(当然 Android 上动态分析 AndBug 也不错)
还有 Compiler ExplorerCTF Wiki 之类的

Radare 2 是著名的开源跨平台逆向分析框架,能够读取多种文件格式、支持很多动态分析调试器、有很多种前端(诸如 Qt 的 Cutter)可以使用,也可以远程调试,支持插件并且 CLI 非常方便,能够进行许多厉害的静态分析

堪比商业软件 IDA
R2 工程组里是有前端的,只不过他们比较喜欢推广 CLI Shell 而已,有些人可能认为 R2 没有前端只能用 CLI,实际上 R2 的 HTML 前端是非常友好的,也非常适合进行远程调试
这里 R2 在开源系逆向工程工具里的地位就好像类似于 KODI 在 Home Theater 软件里的地位了,真的是自由软件一家独大一样

其实有些人认为自由软件非常萎靡不振,永远不可能超过商业软件,单靠爱发电注定失败,其实谁又曾单单靠爱发电过,都是自己或许还有一组人业余时间弄的

真正厉害的自由软件都是后端应用,因为前端是面向用户的,后端是面向开发者的,开发者才会管你开不开源,而且,很多后端都是明白自己能到这一步,身后有大批自由软件的辅助的,包括开始替换 Amsterdam Compiler Kit 的 GNU Compiler Collection(GCC)
不感动才难。

而前端呢?很多前端的技能都是教钱给培训机构学的,或者,他们只能看到自己看文档、看博客时候的『努力』(其实,直白一点说,相比之前的人,你们的那点努力算什么?)。对他们来说,后面的都是各种各样的公司和大佬,自己是交了钱的,或者在『试用』他们的产品,或者觉得某某大佬很厉害,很多人根本不知道最开始的时候计算机世界是怎么样的,后来 Bill Gates 又商业化后又怎么样,不是说商业化不好,但现在很多前端不知道自己熟悉的环境背后有多少自由软件的暗中帮助,所以他们可能会对自由软件乃至开源都有偏见,认为永远不如商业软件

是相当方便的逆向工程和软件分析工具,当然那个分析和编译原理的编译优化分析无关,或许有关但关系不重要。

顺便给大家科普一下, #Android 上用 Radare 2 + R2HTTP 前端如何对 ARM/x86 native code 进行动态分析 #reveng

为了方便起见使用 Android-x86 虚拟机和 R2 的 HTTP 前端进行远程调试。
Radare 2 Web 前端的截图
#sysadmin 至于那个破电脑,我用 DiskGenius DOS 版自动修复了一下坏道(就是动态规划找到如何调整移动分区移动块以便在使用硬件坏道部位留下空白空间,不访问坏道部分即可)

然后现在还好,重启后 WinPE 能挂载 XP C: 盘 所在分区了
可惜电脑太卡,这点修复足足花了连续一晚上又(加起来又)一天的时间
上面右上角那个就是救命的闪存,such wow~
另外一个五六年的破烂笔记本,着实是硬件的问题而且不是主板电容冻了, 比较麻烦而且我目前着实不擅长这类而且没时间

换了最好,反正硬盘又没坏
duangsuse::Echo
#Share #Reveng #Backend #Android #Radare2 #Decompiler #PL #CS #recommended 今天也不去完成之前那个跨平台 ABI 移植的问题了,专门研究一下 BEL 本来的定义是如何运行,指令们等价的代码是什么 顺便写出一点调试用的示例 i686 汇编程序试试 顺便推荐动态指令工具 Frida 和反编译器 RetDec,都是跨平台的逆向分析工具(当然 Android 上动态分析 AndBug 也不错) 还有 Compiler Explorer 和…
呃... 因为今天估计错了,然后现在要去上学 #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));
strcpy(str, msg);

if (argc > 1) printf(str);

return -1;
}

其中 strcpy(str, msg) 是把常量 msg 复制到 str 这个 malloc() 堆分配好的容器里,约等于 C \00 结尾字符串的 *dst = *src

然后这个程序就是 argc 数目大于 1 才会打印字符串,就是说 ./hck['./hck'])不会打印 ./hck foo['./hck', 'foo'])会
然后它要返回 -1,就是说执行完 $? 就是 255(因为一个 8 位的二进制下溢了,最小值是 0 最大值是 255)

我们的 hack 是修改这个字符串,把它改成 duangsuse 笨蛋(吐槽:这么自轻自贱么)
然后是 在不使用额外参数(argc = 1)的时候打印这个字符串,然后让 main() 返回 0 而不是 -1

gcc hack_me.c -o hck -g # 编译
./hck # 应该无输出退出
echo $?
#=> 255
./hck foo
#=> duangsuse 菜鸡

然后我们来打开 radare2,hack 它

[DuangSUSE@duangsuse]~/Projects/reveng% r2 hck 
-- I accidentally the kernel with radare2.
[0x004004a0]>

then

doo # 开始调试
d main # 在 main 入口处处中断
dr # 找到 rsp
# 然后我们 seek 到 rsp
0x7ffc42efd520
*rsp # 输出 0x1,就是 argc
*rsp = 2 # 随便弄个大于 1 的数,这里暂时不教大家怎么修改程序逻辑,暂时教怎么获取和修改数据

然后我们试试第一个 hack 有没效果
[0x7ffc42efd520]> dc
hit breakpoint at: 400586
[0x00400586]> dc
duangsuse 菜鸡
[0x7f2182d35f96]> dc
child exited with status 255

==> Process finished

下一个,main() 返回修改为 0

... 好像没有时间了,明天回来再更
#life #reveng duangsuse 又回来了!(顺带重新更新了一下 r2 git,版本号有点魔性 commit hash 前面带个 g 我居然没看出来不在十六进制范围内(当成 commit hash 的一部分了然后 git loggit show #--shortstat 也可以)找不到)... 身为逆向工程和计算机底层系统爱好者我真该打...)
Forwarded from 羽毛的小白板
Forwarded from 羽毛的小白板