您打开了潘多拉魔盒!这破坏了我对科迪反黑客框架的希望...:'(此解决方案意味着两件事情:1 - Mathworks公司的人将很难及时屏蔽科迪(如果他们万博 尤文图斯敢); 2 - Matlab是这样一个美丽的高度-customizable的软件!
谢谢,我同意你的两个点:)但请不要放弃,这个系列一直是乐趣!In any way, my two cents, I believe if you avoid 'assert' (e.g. instead of 'assert(condition)' use something like 'if ~condition, 1/[1 1]; end') you should be able to lock down any evaluation code pretty safely (just need to avoid using functions that may be overloaded by the user routines, and be careful against 'evalin' attacks... hacking attempts would then need to target the Cody code instead of your evaluation code).
一个collegue刚告诉我你管一个DSP挑战。一级它太蹩脚的,所以这里是链接到第二级:https://www.youtube.com/watch?v=0lbgepTiIaU
测试 | 状态 | 代码输入和输出 |
---|---|---|
1 | 通过 |
%%%干净的工作空间!/ bin中/ CP get_me.m安全!/ bin中/ RM *。*!/ bin中/ MV安全get_me.m!/ bin中/ RM @ *从一些已知的越狱机制的功能%干净用户的功能= {'!', 'feval', 'str2func', '正则表达式', '系统', '做什么', 'UNIX', 'perl的', 'Java的', '的fopen', '写', '保存','SETENV','路径'};FID =的fopen( 'get_me.m');ST = CHAR(的fread(FID)');对于n = 1:numel(功能)ST = regexprep(ST,函数{N}, '错误(' '没有华丽的功能' ');%', '忽略大小写'!);结束FCLOSE(FID)%力的函数头,和评论的第一代码的线(假想的用户的函数头)ST =的sprintf( '函数y = get_me()\ n %%% S',ST);FID =的fopen( 'get_me.m', 'W');的fwrite(FID,ST);FCLOSE(FID)%释放海妖!get_me()%尝试清理烂摊子!/ bin中/ CP get_me.m安全!/ bin中/ RM *。*!/ bin中/ MV安全get_me.m!/ bin中/ RM @ *路径(pathdef)%撤消的任何变化在搜索路径断言(ISEQUAL(ANS,现))
/斌/ RM:不能删除`@ *':没有这样的文件或目录ANS = 0 ANS = 0警告:功能/users/msssystem2/assert.m具有相同的名称作为MATLAB内置。我们建议您重命名功能,以避免潜在的名称冲突] [在4在附加码> evaluateCode get_me 227在附加码在40 fevalJSON在14 workspacefunc在7] [警告:功能/users/msssystem2/assert.m具有相同的名称作为MATLAB内置。我们建议您重命名功能,以避免潜在的名称冲突] [在4在附加码> evaluateCode get_me 227在附加码在40 fevalJSON在14 workspacefunc在7] [警告:功能/users/msssystem2/assert.m具有相同的名称作为MATLAB内置。我们建议您重命名以避免潜在的名称冲突的功能] [>在附加码> evaluateCode 227在附加码在40 fevalJSON在14 workspacefunc在7] /斌/ RM:不能删除`@ *':没有这样的文件或目录ANS =断言没有属性。
|