两个问题

你好, 我已经开发了其他几种语言,最近发现 Python,我正在尝试以Pythoncard的形状使用它 应用程序开发工具. 我的两个问题: 1.以我使用的样式创建for循环的最简单方法是什么 来自Delphi IE: 对于我:= 0到2确实开始 //代码 结尾; 2.除了Philospohy(sp?),我可能想创建一个 我完成的应用程序仅二进制分发. 我注意到了 关于.pyc文件的文档:我如何创建这些文件以及除了 基本上只读,它们是否像普通的.py来源一样使用 文件? 而且它们可以很容易地进行逆转工程吗? 谢谢, -QS计算.

# 回答1

2005年6月2日06:45:18 -0700,qsthydebydeyde***@gmail.com说: 要为Windows创建唯一的二进制分布,您可以使用PY2EXE. 它的 分布文件可以相当容易地进行逆向工程. 干杯, Richard
# 回答2

QSthydeighthide*****@gmail.com写道: 它们是.py文件的编译版本,因此绝对不一样. 当您导入时,它们会自动透明地创建. 模块,因此通常您不会注意它们. 他们能 很容易进行逆转工程,如果您的意思是将 源代码. 例如,请参见"分解". 使用" compileall" 模块您可以手动编译为.pyc,但同样,这通常是 没有必要. 通常建议使用PY2EXE这样的工具进行包装 如果您不想分发来源,尽管很少有 现有工具所做的不仅仅是包装中的.pyc文件 档案,捆绑运行时库,然后添加包装代码以制作 执行透明. 哲学并非完全撇开,您应该注意任何对象代码 语言可以以相同的方式"轻松"进行反向设计 唯一的差异是涉及的轻松程度. 如果代码值得 足以让他们愿意冒着违反您的许可的风险 术语,他们 *将 *能够恢复足够的源代码(无论是 python,c或汇编)去做他们需要的事情. 唯一的确定 保护是将有价值的代码保留在服务器上,并使用某种 Web服务(或其他)以控制对其执行的访问. (那里 在论坛上已经 *很多 *过去对所有这些讨论 - 这是一个 到现在为止非常疲倦的话题 - 因此,请随时仔细阅读档案 通过Google组,然后再问很多相同的问题. 你会帮自己一个忙.) -peter
# 回答3

qsthydebydeyde*@gmail.com写道: 欢迎. 乔尔
# 回答4

彼得·汉森(Peter Hansen)写道: 不要打算劫持此线程,但这让我感兴趣. 我知道 几位经验丰富的C/组装程序员,他们告诉我 从这两种语言中的任何一种中,逆向工程对象代码是 除了微不足道. 但是,我 *听 *和 *读 * * 时间. 任何人都可以演示反映的反编译 原始来源? 另外,我敢说世界上可以 一贯逆转 工程师对象代码几乎是统计上的 微不足道...当然,他们在那里,但是您会赢得彩票 在您遇到其中一个之前,其中大多数人都为大而糟糕的工作工作 政府机构 ;)
# 回答5

RBT写道: 不要打算劫持此线程,但这让我感兴趣. 我知道几位出色的C/组装程序员告诉我,这两种语言中两种的反向工程对象代码绝非易事. 但是,我 *听到 *和 *读 *始终相反. 谁能真正演示反映原始源的反编译? 我给你一个例子:在线/多人游戏GTA 3或4 (http://gta3mta.tk/) C -App从未打算这样工作 - 但巧妙地修补了 有用! 甚至仅作为OSS-没有商业利益(因此 资金). 所以我一天彼得的声明具有充分的有效性 - 这是一个问题 出于兴趣. diez
# 回答6

理查德·刘易斯(Richard Lewis)写道: 嗯,不. 范围(0,3)是正确的,因为Python范围功能 从头到尾生成列表. 范围([start],stop,[step])函数生成了一系列数字序列,该数字会迭代. (您还可以将Xrange()用于更大的内存效率解决方案). 它们是字节码的二进制表示,就像在Java中一样. 他们可以 反向工程比机器代码更容易进行,但这仍然不是不明智的. 顺便说一句,它们是自动创建的... Reinhold
# 回答7

感谢大家的快速回复. 我注意到了 $ python myprog.py 未创建文件myprog.pyc文件,而是文件i的.pyc文件 导入 *是 *创建的. 这是有意的吗?如果是这样,我该如何获得 myprog.pyc文件? 谢谢, -QS计算.
# 回答8

qsthydebydeyde***@gmail.com写道: 我以为文档涵盖了这个问题,所以我把它遗漏了. 这 " main" .py文件未转换为.pyc文件,原因我不能 记住(并且不在乎...之后,就是这样). 如果 您确实需要一个.pyc,最简单的事情是"导入 MyProg"来自交互式提示.我提到的CompileAll模块 也可以做到这一点. -peter
# 回答9

在2005年6月2日在星期四06:45:18 -0700,QSCOMPUTING写道: 是的,它们可以很容易地进行反向设计. 简短的答案是,Python尚未被设计用于隐藏您的代码. 如果 这就是您要做的,也许您需要考虑_why_ 您想付出所有额外的努力来保留软件的秘密, 而不仅仅是_how_秘密. 我能想到一些有人可能想隐藏他们的许多原因 代码. 没有特别的顺序: (1)您为货物代码的质量而感到羞耻,并且不想 人们看到这有多糟糕. 如果是这样,学会编写更好的代码, 最好的方法是让人们看到您的代码并给您建议. (2)您已经偷走了其他人的代码,并试图保持这一事实 秘密. 如果是这样,请支付许可费或合法支付 反向工程器代码, 或使用允许复制的OpenSource软件. 如果您有代码 被盗足够有价值,法律主人也会发现,即使没有 源代码. (3)您创建了一个非常有价值的代码 价值数百万,但前提是没有人能看到源代码. 是的. (4)"这是我的代码,除非我这么说,否则没有人可以使用它!" 美好的, 无论您说什么,都有成千上万的Opensource 软件包与您的软件竞争无限制. 祝你好运. (5)您的代码有安全孔,您希望坏人不会找到 他们无权访问源代码. 准备认真 尴尬,因为饼干会破解您的代码,源代码或 没有源代码. 默默无闻不能代替安全. (6)您担心人们为朋友复制代码 不付钱给你. 如何保持源代码秘密停止 他们从复制.pyc文件并将其交给朋友? (7)您正在使用从其他程序员许可的秘密程序或 公司,使用条件是没有制作源代码 可用的. 祝你好运,我希望它能为您服务. (8)您正在编程游戏或难题,而您不希望玩家 通过阅读源代码作弊. 考虑删除信息 他们需要作弊并将其放在加密的数据文件中. 可能还有其他原因希望将代码保密. 一些 他们甚至可能是"良好"价值的好理由. 现实是,您的代码越有价值,人们的努力就越多 将进行反向工程. 人们会发现它的工作原理 如果他们足够关心,并且您的计划越有价值,那么他们就越多 会在乎. 另一方面,制作代码有令人难以置信的优势 可用于软件用户. 我确定你已经知道那些 优点:您正在学习Python,这是基于这些原则 开放. 如果您想进一步讨论这些问题,请自由. 如果您真的要隐藏您的代码,您可能想考虑使用 c延伸. - - 史蒂文
# 回答10

RBT写道:不要打算劫持此线程,但这让我感兴趣. 我知道几位出色的C/组装程序员告诉我,这两种语言中两种的反向工程对象代码绝非易事. 但是,我 *听到 *和 *读 *始终相反. 谁能真正演示反映原始源的反编译? 这完全取决于"反向工程"的定义. 我认为和经验,世界上很少的代码是如此 复杂的是,编写等效的代码并不那么容易 从头开始(以原始的,工作程序为指导 代码实际上是),因为将对象代码重新转换为 资源. (诸如"分解"之类的例外,可能会使 靠近工作 一边琐碎.) 如果这是真的,它会给我们留下很小的代码子集 给定的程序,这实际上值得努力转换 返回源. 那一点代码通常会很小 这再次是自动转换为源的 有必要,因为对对象代码的分析将相对 很少的努力允许一个人"反向工程师"一些等效的来源 任何语言(或伪代码)选择的任何语言. 因此,对于诸如C之类的语言,汇编过程是公平的 对变量名称和控制结构之类的事物的"破坏性" 使用的是"反向工程",以"自动转换后退" 等效源代码"相当困难,可能是如此 对于大多数非平凡的程序. 我个人不明白需要 为此,除了"我失去了我的来源"和正确的情况之外 答案有一个猛击的会议,其次是tarring和 用颠覆书的页面羽毛. 另一方面,"逆向工程"以"创建" 源代码能够复制有价值的效果 对象代码的有趣部分"并不困难,在 "理解该代码的工作原理"的感觉更容易,仅仅是 该步骤的第一部分. 软件开发更多地是关于选择正确的问题 解决方案和正确解决方案的正确方法比编写源 可以完成这项工作的程序的代码. 如果我有一个自动化工具来复制给定的源代码 程序,我仍然非常担心我没有结束任何 其自动测试用例. ;-) -peter
# 回答11

>>> 1.以我使用的样式创建for Loop的最简单方法是什么 对我的文本的非常字面的解释:我应该说: 类似于".:-)的样式 我可以想到有人可能想隐藏其代码的许多原因. 我真的无法想到想要隐藏代码的任何紧迫的理由 除了在窗户上编码的习惯,我敢肯定 您会知道的,否则将其视为有些奇怪. 像所有习惯一样 这很难打破. :-(
# 回答12

彼得·汉森(Peter Hansen)写道: *提供*" main" .py文件已正确设置 Scripty Bits被"如果__ -name __ =='__ main __':"守护 否则,进口时可能会发生副作用(可能是可怕的). 解决此问题的另一种方法是Myprog.py成为一个单纯的存根 这样的事情: 如果__name__ ==" __ -main __": 导入myrealprog myrealprog.main() 我提到的CompileAll模块也可以做到这一点. -peter
# 回答13

史蒂文·达·阿普拉诺(Steven D'Aprano)写道: 哲学. 在Pythoncard? 我不知道. 对不起. 在普通的python中? 当您运行或导入Python模块时,Python解释器首先要查找比.py文件更新的同名文件的.PYC文件. 如果找不到一个,则将.py文件编译到B中 YTE代码,将字节代码存储在.PYC文件中,然后运行. 换句话说,要创建.pyc文件,只需运行.py文件,Python就会自动执行此操作. 仅运行.py文件将创建.pyc文件的概念是 与广泛拥有的信念相反,并且(公认的很小但很新, 在Python 2.4.1上,在我拥有和写入访问的目录中) 经验证据. 我不能打扰检查 *目击的所有 * 时间机器,但我的1.5.2副本表现出相同的行为. 您可能会误会吗?
# 回答14

史蒂文·达·阿普拉诺(Steven D'Aprano)写道: 或进行Amazon/eBay/Google方法,并仅提供客户端访问 到您的代码. andrew daxe@dalkescientific.com
# 回答15

约翰·明林(John Machin)写道:仅运行.py文件将创建.pyc文件的概念与广泛拥有的信念背道而驰,并且在我拥有的目录中,在Python 2.4.1上很小但最新的Python 2.4.1 已经写入访问)经验证据. 我不能打扰检查时间机器的所有 *目击者,但我的1.5.2副本表现出相同的行为. 您可能会误会吗? 好吧,众所周知,这是以前发生的. 特别是在凌晨3点. 所以,是的,当然我有可能误会. 但是,我保证在Python3000中,Python 字节代码解释器将与Guido集成 时间机,以创建.pyc文件 在您甚至编写.py文件之前,请节省很多 发展时间. - - 史蒂文.
# 回答16

安德鲁·达克(Andrew Dalke)写道: 嗯...如果这些是GPL武器,如果您想开火 他们在任何人都可以 *让他们可以使用的任何人 所有其他国家也不适合 不扩散... - - Greg Ewing,计算机科学部, 坎特伯雷大学, 基督城,新西兰http://www.cosc.canterbury.ac.nz/~greg
# 回答17

格雷格·尤因(Greg Ewing)写道: 我认为源代码只需要发送到 接受武器的国家. 包括DVD 弹头(以进一步发展的可用形式) GPL应该得到满足. andrew daxe@dalkescientific.com
# 回答18

抱歉继续劫持线程... 史蒂文·达·阿普拉诺(Steven D'Aprano)写道: 来自源代码透明度的有趣的花冠是 通常,看到谁从您那里偷走了,这通常会变得容易得多. -alex23
# 回答19

安德鲁·达克(Andrew Dalke)写道: -ID软件使大量资金许可其3D FPS引擎 一两个或一千盈利的存在 来自现有数百万的软件包确实 并不使我的怀疑主义无效,因为 软件将直接为开发人员赚钱. 甚至假设赚钱能力将是 如果有源代码可用,则丢失,这不是 给定(ID软件开源的旧版本 渲染引擎,MySQL非常有利可图, 他们的软件可用源代码,所有). 软件很少为开发人员赚钱 直接地. 与任何开发人员的赔率 怀疑论. - 股票市场贸易公司部分通过拥有专业软件来帮助市场交易,预测等赚钱. 您在这里混合了许多单独的问题. 如果贸易公司将软件内部保存, 那么使源代码可用的问题是 无关紧要,因为它们没有分发对象代码 任何一个. 如果他们在外部分发软件,那么 几乎肯定有更多的保护免受许可证 协议和版权比仅仅从 隐藏源. 他们甚至隐藏了源 代码,不是给定的. 至于他们赚钱的问题,我不是 建议软件不能为 商业. 我为一家赚钱的企业工作 Linux,Apache,Perl,Python和其他相同的FOSS 木匠从锤子中赚钱的方式:他们 是我们用来提供产品和服务的工具 我们出售盈利. 内部使用市场预测软件属于 "木匠的锤子"类别,而不是"赚钱 通过销售软件"类别". 至于销售预测软件,好吧,您还没有 证明使源代码可用 会损害从中赚钱的能力. 首先, 通常,该软件的价值不是 他们使用的算法(曲线拟合软件和 外推算法几乎不是秘密),但是 算法使用的数据. 只要你保留 财务数据专有,保留源代码 秘密什么也没添加. 其次,即使软件是垃圾, 预测给出的结果没有比机会更好,没有 意味着公司不能赚钱出售它. 看着 预测彩票数字的"系统"的普及. 但是代码是数据... 一个没有在 讨论:-)并非难题中的所有数据允许 作弊的玩家,是吗? 例子:知道如何 纸牌在屏幕上绘制卡片无济于事 您赢得任何游戏. 您是美国政府开发的软件来设计/测试下一代核武器系统,并且不希望其他国家使用它. (gnunuke?) 然后不要分发软件,对象或源代码. 您是一名学生参加一个带家榜样的学生,您不允许您与其他人一起工作/帮助其他人 嗯,我看不出应该如何工作. 一个 什么例子? 如何保留源代码 秘密阻止学生与他人合作? 或使用Amazon/eBay/Google方法,并仅提供客户对代码的访问. 是的,好点. 那是告诉你的另一种方式 客户在什么情况下被允许 使用软件. 谁知道,如果您的软件是 足够有价值和独特的东西,他们甚至可能是 准备按照您希望他们工作的方式工作 他们想要工作的方式. - - 史蒂文.
# 回答20

史蒂文·达·阿普拉诺(Steven D'Aprano)写道:您正在混合 这里的单独问题数量. 我是. 如果他们在外部分发该软件,那么几乎可以肯定,与仅隐藏源头相比,他们免受许可协议和版权的保护更大. 如果他们甚至隐藏了源代码,那不是给定的. 啊,我以"隐藏来源"的意思以为"不是开源". 的 当然,有许多方案也可以访问购买者 遵守代码,但没有重新分配权. 内部使用市场预测软件属于"木匠的锤子"类别,而不是"通过销售软件赚钱"类别. 我实际上在想出售的市场交易软件. 隐藏自己的软件是非常荒谬的. 我在休斯敦的Python会议上听到的一个故事(我认为98年) 是一家开发这种包裹的公司. 他们重做 它和内部使用了较新的版本,但卖出了较旧的版本 包括竞争对手在内的其他公司的能力版本. 与开放/封闭/隐藏/等无关. 但是一个有趣的故事. 至于销售预测软件,您尚未证明使源代码可用会损害从中赚钱的能力. 首先,该软件的价值通常不是它们使用的算法(曲线拟合软件和外推算法几乎不是秘密),而是该算法使用的数据. 只要您保留财务数据专有,请保留源代码秘密,一无所获. 在DC举行的2000年Python会议上,埃里克·雷蒙德(Eric Raymond)是主题演讲. 他从"魔术大锅"中提出了自己的想法 他给出的一个例子之一,不应开源 来自开发软件以优化木材切割的公司 从树上. 在这种情况下,值 *是 *使用的算法. 请注意,他的演讲有几个反对意见. 其中一个是他的"放弃食谱,开设一家餐厅" http://www.catb.org/~esr/writings/ma...n-9.html#ss9.3 在他的演讲中,他提到了一家著名餐厅,并指出你可以 获取餐点的食谱. 听众的一个人说他 他们在一家引用的姐妹餐厅工作,他们签名 NDA,并且已发表的食谱经常将一些关键部分排除在 使它很难复制. 然后不要分发软件,对象或源代码. 武器本身中的软件呢? 当使用时 当然是交付的. 当我和格雷格·尤因开玩笑时 - 也可能 与弹头一起包含源代码. 嗯,我看不出应该如何工作. 一个例子? 保持源代码的秘密如何阻止学生与他人合作? 有道德义务. 我可以修改情况. 将其变成分配而不是测试,并让用户 与其他同学的测试&QA是作业的一部分,但 共享代码不是. 分发.pyc可能是合成的 德 如果调查了窃指控,足够的保护. andrew daxe@dalkescientific.com

标签: python

添加新评论