我得到了gdb brew install gdb.
源文件内容是:
#include <cstdio>
int main(){
int a = 10;
for(int i = 0; i< 10; i++){
a += i;
}
printf("%d\n",a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是名为'demo'的可执行文件:https: //pan.baidu.com/s/1wg-ffGCYzPGDI77pRxhyaw
我像这样编译源文件:
c++ -g -o demo demo.cpp
Run Code Online (Sandbox Code Playgroud)
并运行gdb
gdb ./demo
Run Code Online (Sandbox Code Playgroud)
但是,它无法奏效.它无法识别可执行文件.
GNU gdb (GDB) 8.2
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to …Run Code Online (Sandbox Code Playgroud) 我想从已使用codesign签名的Mac应用中删除数字签名.有一个未记录的选项来编码, - 删除签名,它的名字似乎就是我所需要的.但是,我无法让它发挥作用.我意识到它没有记录,但我真的可以使用这个功能.也许我做错了什么?
codesign -s MyIdentity foo.app
Run Code Online (Sandbox Code Playgroud)
正常工作,签署应用程序
codesign --remove-signature foo.app
Run Code Online (Sandbox Code Playgroud)
然后说磁盘活动几秒钟
foo.app: invalid format for signature
Run Code Online (Sandbox Code Playgroud)
和foo.app已经增长到1.9 GB!(具体来说,它是foo.app/Contents/Resources/MacOS中的可执行文件,从1.1 MB增加到1.9 GB.)
当我尝试签名/取消签名二进制支持工具而不是.app时,会发生同样的事情.
有任何想法吗?
背景:这是我自己的应用程序; 我不打算打败版权保护或类似的东西.
我想分发一个已签名的应用程序,以便每次更新应用程序都不需要用户批准来读取/写入应用程序在钥匙串中的条目.但是,有些人需要通过将自己的文件夹添加到/ Resources来修改应用程序.如果他们这样做,签名将变为无效,并且应用程序无法使用自己的Keychain条目.
该应用程序可以轻松检测是否发生了这种情况.如果应用程序可以删除它的签名,一切都会好的.那些进行此修改的人需要给修改后的,现在未签名的应用程序许可才能使用Keychain,但这对我来说没问题.