V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  amiwrong123  ›  全部回复第 3 页 / 共 39 页
回复总数  777
1  2  3  4  5  6  7  8  9  10 ... 39  
@NessajCN #7
等等。
首先,“私钥签名->公钥验证”,你发一条信息出去,任何知道你公钥的人都能验证这条信息是来自于你。

然后,你说的,“私钥加密公告->别人用公钥解密”,也能达到这个目的“你发一条信息出去,任何知道你公钥的人都能验证这条信息是来自于你”呗。
- 因为公钥是公开的,所以其实谁都可以解密。
- 但至少可以证明 信息发送者的身份。

神奇,这两种方式都可以达到这目的。😮
破案了,我自己 特殊处理了 make 的输出,替换反引号为单引号,再给到 compiledb 。生成的 compile_commands.json 还是一个空文件。

看来和这个路径字符没有关系。

但问题还是没解决。。。
111 天前
回复了 amiwrong123 创建的主题 程序员 6.828 课程的 RISC-V 版本建议选哪年的?
@Noicdi #2
@Cola98 #5
@aldehyde #6
@Noicdi #9
不管了,就选 20 年的。感觉 20 的,网上的视频和 笔记 都挺多的。
111 天前
回复了 amiwrong123 创建的主题 程序员 6.828 课程的 RISC-V 版本建议选哪年的?
@Cola98 #5
@Noicdi #8
We haven't tested it, but it might be possible to get everything you need via the Windows Subsystem for Linux or otherwise compiling the tools yourself.

https://pdos.csail.mit.edu/6.828/2020/tools.html

看到原话了,它说大概率在 wsl 上,是可以的。
111 天前
回复了 amiwrong123 创建的主题 程序员 6.828 课程的 RISC-V 版本建议选哪年的?
@Cola98 #5
哇,他们教程里还提到了“可以用 wsl2”这件事吗。

电脑已经有了 wsl 的 Ubuntu20 ,可以开始搞了。
112 天前
回复了 amiwrong123 创建的主题 程序员 6.828 课程的 RISC-V 版本建议选哪年的?
@zwlinc
@Noicdi
对了,问一下,我在 win11 的 wsl 里做这个课程,应该也一样吧。
之前做的时候是在 vmware 的虚拟机里面做的。
112 天前
回复了 amiwrong123 创建的主题 程序员 6.828 课程的 RISC-V 版本建议选哪年的?
@zwlinc
好吧,回头我对比一下
114 天前
回复了 amiwrong123 创建的主题 问与答 usb 同步器的穿越模式怎么用的?
@smilecat
需要两个电脑在同一个网段不
@vislins
感觉应该是你说的第 2 个问题。
我以为直接在文件管理器里用就好了
@UncleCAT4
你是说我文件管理器的截图吗,然后你说条目后面应该有状态呗?
有图吗,以前一直没用过,可能用法不对
115 天前
回复了 amiwrong123 创建的主题 问与答 usb 同步器的穿越模式怎么用的?
@paopjian #1
https://blog.csdn.net/sevendemage/article/details/136495567
是这篇博客的使用方法吗?

看起来还行,但是我的笔记本和 主机,应该是不同的网段。或者说,一个是外网,一个是内网。网段不一样,估计这个方案不行了吧。

而且,这个方案应该只解决了鼠标问题,还有键盘没解决呢
164 天前
回复了 amiwrong123 创建的主题 奇思妙想 有什么可以做历史时间轴的软件?
@kylebing #1
本地我试了一下,新建了一个 html 和 json ,然后改掉一些必要的东西。然后浏览器打开,发现确实这个效果不错。
不过 这个 json 文件的各个字段,还有点没搞明白。回头再研究。

不过有一点,直接编辑 json ,会不会显得有点麻烦。不过好像为了 有这么好的功能,好像又 不得不这么做。。

另外,我看它还有一个 google spread sheet 的方式,但我看 最后需要生成一个 url ,感觉不符合我 本地制作的 初衷了。
@ysc3839 #31
@e3c78a97e0f8 #32
@MrKrabs #13
@iceheart #26

我这里试了 gcc -Wall -g -O3 -o test.o -c test.c -m32 && gcc -o test test.o -m32
然后用 objdump -dx test ,直接查看最后的可执行文件。

![]( https://s3.bmp.ovh/imgs/2024/06/05/3b0683fd31bd5d68.png)

如上图,是执行的结果。是 objdump -dx test 的汇编。


看起来就是优化掉了,函数开头结尾的栈帧维护操作,比如开头的 push %ebp ; mov %esp,%ebp 。比如结束的 leave 。

PS:抱歉试得有点迟了
@chitaotao #21
前两次 sub 确实是 为了汇编里面的 这两次 call 的对齐要求,来做的。我用 gdb 看了后,发现确实是这样的。
@ysc3839 #7
我试了,加-fcf-protection=none 参数,然后就没有 endbr32 了。
但 print_banner 的其他汇编还是一样的。
@AoEiuV020JP #2
printf 这个 f 可不简单,可以进一步说一下吗
@bfc0 #10
@chitaotao #17
![]( https://s3.bmp.ovh/imgs/2024/06/03/03f454618e14e907.png)

关于这个 get_pc_thunk 附件的汇编,感觉有点神奇哦(请看上图)。

明明“可重定位目标文件”里面还是 add $0x1,%eax 和 lea 0x0(%eax),%edx ,用 gdb 调试时,就变成了其他值,这是发生了 重定位吗
@chayuu #15
objdump -dx 这个命令能看到的信息 更多了:
Disassembly of section .text:

00000000 <print_banner>:
0: f3 0f 1e fb endbr32
4: 55 push %ebp
5: 89 e5 mov %esp,%ebp
7: 53 push %ebx
8: 83 ec 04 sub $0x4,%esp
b: e8 fc ff ff ff call c <print_banner+0xc>
c: R_386_PC32 __x86.get_pc_thunk.ax
10: 05 01 00 00 00 add $0x1,%eax
11: R_386_GOTPC _GLOBAL_OFFSET_TABLE_
15: 83 ec 0c sub $0xc,%esp
18: 8d 90 00 00 00 00 lea 0x0(%eax),%edx
1a: R_386_GOTOFF .rodata
1e: 52 push %edx
1f: 89 c3 mov %eax,%ebx
21: e8 fc ff ff ff call 22 <print_banner+0x22>
22: R_386_PLT32 puts
26: 83 c4 10 add $0x10,%esp
29: 90 nop
2a: 8b 5d fc mov -0x4(%ebp),%ebx
2d: c9 leave
2e: c3 ret

比如 call 22 ,它解释了是 PLT 表的内容。

不过上面的这几个解释还没太看懂:R_386_PC32 R_386_GOTPC R_386_GOTOFF
@chitaotao #18
老哥,你应该解决了我的这个疑问:为什么汇编里面会有两个 call 。我尝试加了-fno-pie -no-pie ,print_banner 的汇编就只有一个 call 了。
就是这个“位置无关代码”的知识点没有掌握,明天我去研究一下。

新的汇编如下:
Disassembly of section .text:

00000000 <print_banner>:
0: f3 0f 1e fb endbr32
4: 55 push %ebp
5: 89 e5 mov %esp,%ebp
7: 83 ec 08 sub $0x8,%esp
a: 83 ec 0c sub $0xc,%esp
d: 68 00 00 00 00 push $0x0
e: R_386_32 .rodata
12: e8 fc ff ff ff call 13 <print_banner+0x13>
13: R_386_PC32 puts
17: 83 c4 10 add $0x10,%esp
1a: 90 nop
1b: c9 leave
1c: c3 ret

不过这里面的栈操作还是有点奇怪,先减 8 ,再减 c ,最后加 0x10 。感觉减和加的操作 不对等(而且 sp 都减完了,也不用,还是要用 push 再隐式得减 sp ,奇怪)。

不像那篇博客里 print_banner 的汇编( sp 减 8 ,是为了放入 0 参数),每一步都能看懂。
@swulling #1
问了大模型,它也觉得很奇怪😓

检查编译器版本:确保你和别人使用相同的编译器版本。

sh
复制代码
gcc --version
使用相同的编译选项:确保你们使用相同的编译选项和优化级别。

sh
复制代码
gcc -Wall -g -O0 -o test.o -c test.c -m32
禁用安全特性:如果不需要 Intel CET ,可以通过编译选项禁用它:

sh
复制代码
gcc -Wall -g -o test.o -c test.c -m32 -fcf-protection=none

反正给了几个解决方法,都不好用。
1  2  3  4  5  6  7  8  9  10 ... 39  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1013 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 23:10 · PVG 07:10 · LAX 15:10 · JFK 18:10
Developed with CodeLauncher
♥ Do have faith in what you're doing.