chitaotao 最近回复了
这个是 glibc 2.41 或更新版本更改了可执行栈的规则,破坏了很多程序的兼容。旧版本如果动态库有可执行栈,主程序没有,会静默的将主程序的栈设置为可执行;而新版本的行为是直接异常退出,错误信息就是这个。解决方式有两个,第一种就是把主程序(钉钉)设置为可执行栈,使用 execstack ,第二种是如果你确定动态库( dingtalk_dll )不需要可执行栈,可以去掉他的可执行栈 flags ,也是使用 execstack
ublock origin 有一个 Block Outsider Intrusion into LAN 规则,可以屏蔽对本地网络的访问; jshelter 也有屏蔽本地网络访问的选项
Windows 下确实比较复杂,可以看看 rufus ,支持把硬盘存为 vhd/vhdx 文件。主要的问题应该是大小,vhd 是无压缩的,vhdx 有一定的压缩,但如果想要压缩到原本 armbian 的程度可能比较复杂,需要在 Linux 下对镜像出来的文件使用 resize2fs 更改分区大小或是 fstrim 把文件变成稀疏的
一堆 sub 应该是在做栈对齐,i386 System V ABI 要求栈 esp+4 ( 4 是返回地址大小)对齐到 16 字节,按他这样算在 call 的时候刚好会对齐到 16 字节
要不编译成位置无关代码,加-fno-pie -no-pie
你这个是没有做重定位的二进制,所以地址什么的都是 placeholder 而不是有意义的地址,你可以去掉-c 再看看。你这应该是编译成位置无关代码,我编译了一下,就是这个结果,i386 下位置无关代码需要通过特殊的函数获取当前的 eip ,就是第一个 call
可以用 process monitor ,看看程序的行为,包括读写注册表和文件这种的