修改别人程序的技巧PPT课件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020/10/13
7
通读源代码
通读代码包括通读目录下的所有文件,特别是 Readme,Manual,help,guide,doc,faq这种开头 的文档。很多简单的安装出错其实在手册里面都 已经告诉你了。
修改别人的程序时一定要通读代码,这样才可以 保证修改了不加入新的Bug,并且可以充分利用原 先的代码。
10
耦合度最低
增加进去的代码应该尽量跟原程序比较分 离。总的原则是:源代码就像刺猬,能不 碰就不碰。
把增加的代码包装成一个过程或者函数, 在正确的地方调用一下即可。这样是为了 代码的美观。
2020/10/13
11
耦合度最低
给函数增加功能的方法: 比如一个函数void foo(int i, string s);在多处有调用,你要给foo加入一 个新的功能在你自己的代码内调用,你可以。
改变自身需求,使需求适应下载的代码,达到直 接使用,无需修改。 比如你打算找一个实现某些功能的代码,可 是找了很多代码,要不只能实现其中的某些功能, 要不就是某些功能不完全符合你的要求,这时就 必须改变自己最原始的想法,找一个最接近的代 码。因为有时候你原先的需求就是错误的。
2020/10/13
3
wenku.baidu.com
2020/10/13
13
针对下载的Asp代码的修改
查看是否有对用户的输入做过滤 如是整型就用一个自己包装的函数 int GetInt(string s) 在函数内,如果不是整形,就简单得结束脚本。 Response.Clear; Response.End;
不要告诉用户哪里出错了,因为在正常使用时不会发生这种情况。 如是字符型就用 string FilterInputSql(string s) 开始可能只过滤 ’ ,以后发现新的漏洞可以只修改这个函数即可。
12
针对下载的Asp代码的修改
修改数据库文件名 例如改为dsfs354sfubzdpIUHndsgs.mdb,使用
拷贝粘贴放入数据库连接字符串。 根据zhiwei的建议,在IIS里给*.mdb影射一个
字节为0的假*.dll文件。 如果是SqlServer,新建一个权限比较低的用户作
为该数据库的管理员。如果这个用户被攻破,他 也做不了什么。如果可以,使用Windows 身份验 证而不是Sql身份验证。 如果有上载文件管理,注意过滤上载文件某些特 定的后缀名,把可上载的目录设置为不能执行脚 本权限。
寻找合适的代码
代码必须架构合理,编码规范,这样的代 码安全系数才比较高。
源代码作者经常更新。 源代码公布后,如果有什么安全漏洞,
整个系统就暴露在cracker面前。只有源代码 作者根据用户的建议不断修复Bug和增加功 能,才是可信赖的系统。
2020/10/13
4
寻找合适的代码
推荐网站 和 。 sourceforge.net 是网上最大的开放源代
3. 不写foo_new函数,使用全程变量,blnHackIt,初始值为DEFAULT VALUE,在新调用的地方把blnHackIt设置定某个值,在foo里面加 入 if blnHackIt = SOME VALUE then do something… end if
4. 选择后面2种之一。
2020/10/13
1. 写一个void foo_new(int i, string s, boolean b);把foo这个函数体拷贝到 foo_new。在foo_new里添加代码,这样的坏处是你如果更新foo,你 必须同时更新foo_new。有相同的代码散布在系统各处是编程大忌。
2. 写一个void foo_new(int i, string s, boolean b);把foo改为调用foo_new(i, s, DEFAULT VALUE)。
谈程序的修改技巧
2020/10/13
收集整理
1
修改代码原则
寻找合适的代码 记录每个修改 通读源代码 修改最少 耦合度最低
2020/10/13
2
寻找合适的代码
修改代码不如自己重写代码,除非时间、人力方 面不允许。 修改代码之前必须先读懂对方的源代码,这 花的时间可能会比自己写花的时间更多。必须在 这两者之间取得平衡。
防止跨站点脚本攻击 <script>alert(‘hehe’);</script> 攻击者可能会得到使用你网站的用户的cookie信息。如果你在 cookie保留用户的用户名和密码。。。
有时为了增加一个新功能,你可以写了一个下午 的代码,过几天后发现源代码里面其实有这个功 能函数,只需调用某个函数即可。这就是没有通 读源代码的结果。
2020/10/13
8
通读源代码
用文本文件记录下代码的函数功能,一些 值得注意的地方。
一定必须确保你知道这个软件在干什么, 管理员有几个入口,有几个内置帐号需要 关闭等等。
码聚合地。有大量的源代码,分类组织, 便于查找。
google.com 最好的搜索引擎,基本上你 可以找到任何东西,如果你使用了正确的 关键字。通过搜索技巧,变换关键字。
2020/10/13
5
记录每个修改
使用文本文件记录下修改,以便快速恢复 因为开始我们只是试用一个系统,或
者只是试着加入一些功能,如果加入功能 失败,你又不知道加入了那些东西,这时 你可以全部删除你刚才的修改,把原始文 件重新解压,根据文本文件的记录恢复到 某个版本。或者使用cvs系统自动控制。 记录下打算增加或者修改的事情,记为todo, 完成后放入done区。可以使用文本文件手动 维护todolist。
2020/10/13
9
修改最少
定位修改位置,可以使用Editplus的目录全 文检索功能。根据用户界面的文字做关键 字。Web的用户界面文字可能不准确,可以 查看web源代码或者缩小文字单位。
如果一个功能有多个修改方法,使用修改 最少的那种。虽然这种可能破坏了代码的 架构。
2020/10/13
2020/10/13
6
记录每个修改
有了这个记录,就可以在下次推出 新版本后继续修改。
每件事都有记录是一个好的习惯。 在源代码里也可加上记录,比如
//2003.12.25 modify by Haishion,禁止在下班时间发表,Begin something…………
//2003.12.25 modify by Haishion,禁止在下班时间发表,End
相关文档
最新文档