逆向(反汇编)别人的软件exe文件(无源码),在自己程序中调用了其中的功能函数,并助我盈利,算侵权吗?

maxos 2017-12-19 07:05:53
逆向(反汇编)”A公司“ 的软件 exe 文件(我手里没有他们公司的源代码),再在自己程序中调用了其中的功能函数,但最终发布时,我的工程目录里不放置”A公司“的exe文件,只是用到了 "A公司” 的 exe 逆向(反汇编)后的代码,并助我盈利,这样算侵权吗?

麻烦有经验的朋友告知一下,感激不尽。

我发现整个论坛没有软件法律法规相关知识。很迷糊。
...全文
1639 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
claider 2018-09-08
  • 打赏
  • 举报
回复
应该算的。早期软件讲究copy right的时候,注意事项等条款里都会警告相关内容。现在都是BS架构的多,这种条款见得少了。但是按道理知识产权保护的法律都会限制逆向工程。至少你不应该宣称该动作,并尽快使用自有代码替代。
天外怪魔 2018-03-13
  • 打赏
  • 举报
回复
当然算。不过你手法好一点,别人发现不了就没事了。和电瓶车违章一个道理。
nooning 2018-03-13
  • 打赏
  • 举报
回复
腾讯让很多人去吃了国家饭。 这是外挂功能,无论目标程序是否启动,或者你只是在静态调用。还是还原出来写个代码吧,如果你是要商业化的。
NANU-NANA 2018-01-02
  • 打赏
  • 举报
回复
这个提议不错,应该有个法律相关的板块
threenewbee 2017-12-23
  • 打赏
  • 举报
回复
看你的司法成本和收益了。 以前有个台湾的公司逆向了汉王的文字识别库,自己做了一个文字识别(连源代码都没有参考)。汉王的团队用技术手段取证成功,打赢官司。这是一个经典的案例。
ToF君 2017-12-23
  • 打赏
  • 举报
回复
只要你不占市场份额,人家不理你的
正怒月神 2017-12-20
  • 打赏
  • 举报
回复
要看你这段代码是不是A公司的核心技术。 之前hbulider就告了另一个公司,据说也是只使用了一段核心代码。
luciferisnotsatan 2017-12-20
  • 打赏
  • 举报
回复
小作坊就算你直接打包了A的代码,A公司目前都懒得告你,能赔的钱还不够律师费的。 大公司,找公司法务部门让他们去研究。
luciferisnotsatan 2017-12-20
  • 打赏
  • 举报
回复
引用 楼主 maxos 的回复:
我发现整个论坛没有软件法律法规相关知识。很迷糊。
猴子们都没几个关心过和自己切身利益相关的劳动法的,你还指望在这质询版权问题
zbdzjx 2017-12-20
  • 打赏
  • 举报
回复
印象中,好像是源代码百分之多少相似就是侵权了。 最好是看懂他函数的功能,做一些大的改动。结果不变的情况下,过程多改一些。
_nives 2017-12-20
  • 打赏
  • 举报
回复
把分全给哥 2017-12-20
  • 打赏
  • 举报
回复
自己写
luciferisnotsatan 2017-12-20
  • 打赏
  • 举报
回复
康柏当年就是逆向了IBM的bios,逆向分析逻辑,然后自己写代码,应该不侵权的。你要还是打包了A的一部分的代码(二进制模块),那应该是侵权了。
真相重于对错 2017-12-20
  • 打赏
  • 举报
回复
应该算侵权!
加盾男爵 2017-12-20
  • 打赏
  • 举报
回复
我玩魔兽世界的时候,游戏条款里有规定:严禁对游戏进行反编译,但我不知道这条是否有效
江湖评谈 2017-12-19
  • 打赏
  • 举报
回复
.net reflector 反出来的东西 没什么技术含量,你随便用。
如果用 gcc odp eax等 反出来的。那得另说
第三卷************** 不错的PDF电子书,共3个分卷,点我名字可以找全 第1部分 逆向101 第1章 基础 3 1.1 什么是逆向工程 3 1.2 软件逆向工程:逆向 4 1.3 逆向应用 4 1.3.1 与安全相关的逆向 5 1.3.2 软件开发逆向 8 1.4 底层软件 9 1.4.1 汇编语言 10 1.4.2 编译器 11 1.4.3 虚拟机和字节码 12 1.4.4 操作系统 13 1.5 逆向过程 13 1.5.1 系统级逆向 14 1.5.2 代码级逆向 14 1.6 工具 14 1.6.1 系统监控工具 15 1.6.2 反汇编器 15 1.6.3 调试器 15 1.6.4 反编译器 16 1.7 逆向合法吗? 17 1.7.1 互操作性 17 1.7.2 竞争 18 1.7.3 版权法 19 1.7.4 商业机密和专利权 20 1.7.5 美国数字千禧版权法 20 1.7.6 DMCA案例 22 1.7.7 许可证协议 23 1.8 代码范例与工具 23 1.9 结论 23 第2章 底层软件 25 2.1 高阶视角 26 2.1.1 程序结构 26 2.1.2 数据管理 29 2.1.3 控制流 32 2.1.4 高级语言 33 2.2 低阶视角 37 2.2.1 底层数据管理 37 2.2.2 控制流 43 2.3 汇编语言101 44 2.3.1 寄存器 44 2.3.2 标志位 46 2.3.3 指令格式 47 2.3.4 基本指令 48 2.3.5 范例 52 2.4 编译器和编译入门 53 2.4.1 定义编译器 54 2.4.2 编译器架构 55 2.4.3 列表文件 58 2.4.4 专用编译器 59 2.5 执行环境 60 2.5.1 软件执行环境(虚拟机) 60 2.5.2 现代处理器的硬件执行环境 63 2.6 结论 68 第3章 Windows基础知识 69 3.1 组件及基本架构 70 3.1.1 简要回顾 70 3.1.2 特征 70 3.1.3 支持的硬件 71 3.2 内存管理 71 3.2.1 虚拟内存和分页 72 3.2.2 工作集 74 3.2.3 内核内存和用户内存 74 3.2.4 内核内存空间 75 3.2.5 区段对象 77 3.2.6 VAD树 78 3.2.7 用户模式的内存分配 78 3.2.8 内存管理API 79 3.3 对象与句柄 80 命名对象 81 3.4 进程与线程 83 3.4.1 进程 84 3.4.2 线程 84 3.4.3 运行状态切换 85 3.4.4 同步对象 86 3.4.5 进程初始化顺序 87 3.5 应用程序编程接口 88 3.5.1 Win32 API 88 3.5.2 本地API 90 3.5.3 系统调用机制 91 3.6 可执行文件格式 93 3.6.1 基本概念 93 3.6.2 映像区段(Image Sections) 95 3.6.3 区段对齐(Section Alignment) 95 3.6.4 动态链接库 96 3.6.5 头部 97 3.6.6 导入与导出 99 3.6.7 目录 99 3.7 输入与输出 103 3.7.1 I/O系统 103 3.7.2 Win32子系统 104 3.8 结构化异常处理 105 3.9 结论 107 第4章 逆向工具 109 4.1 不同的逆向方法 110 4.1.1 离线代码分析 110 4.1.2 现场代码分析 110 4.2 反汇编器——ILDasm 110 4.3 调试器 116 4.3.1 用户模式调试器 118 4.3.2 内核模式调试器 122 4.4 反编译器 129 4.5 系统监控工具 129 4.6 修补工具 131 Hex Workshop 131 4.7 其他类型的逆向工具 133 可执行程序转储工具 133 4.8 结论 138 第2部分 应用逆向 第5章 未公开的技术 141 5.1 逆向和互操作性 142 5.2 基本原则 142 5.3 定位未公开的API函数 143 我们要找什么? 144 5.4 案例研究:NTDLL.DLL的 5.4 Generic Table API 145 5.4.1 RtlInitializeGenericTable 146 5.4.2 RtlNumberGenericTableElements 151 5.4.3 RtlIsGenericTableEmpty 152 5.4.4 RtlGetElementGenericTable 153 5.4.5 RtlInsertElementGenericTable 168 5.4.6 RtlLookupElementGenericTable
vs2017建立一个静态库lib工程 起号工程名字BeaEngine  然后选release配置选项 1,把headers\Includes下面到2个头文件拖到src\Includes的目录下面 2,把headers\BeaEngine.h拖出放到cpp工程所在目录下,并导入到vs2017的项目头文件栏 3,把src\BeaEngine.c 拖出放到cpp工程所在目录下,并导入到vs2017的项目源文件栏 4,把src目录下面的文件夹拖到cpp工程所在目录下. 把include\下面的beaengine文件夹拖出放到cpp工程所在目录下.把src\Includes文件夹拖出放到cpp工程所在目录下 4,项目-->属性--> c/c++ -->预编译头-->选择 不使用预编译头 5,项目-->属性--> c/c++ -->附加包含目录 beaengine文件夹, Includes文件夹, Includes\instr_set文件夹(注意后面2个文件夹是src拖出来到cpp工程所在目录下的) 6,注意错误提示,若有则单击提示,把#include 修改为#include "xxx.h" 7,项目-->属性--> 常规-->无全程序优化 ,字符集选--》多字节字符集 8,项目-->属性--> c/c++ -->代码生成-->运行库 选择多线程(/MT) 9,项目-->属性--> c/c++ -->高级-->调用约定选择 __stdcall (lib和调用程序都需要选择 __stdcall,否则默认以c调用,带@的符号找不到的错误提示) 10,调用程序最好把headers\BeaEngine.h拖出放到cpp工程所在目录下,并导入到vs2017项目的头文件 11,项目-->属性--> 常规-->字符集选--》多字节字符集使用 Unicode 字符集(已测试过能正常使用!lib和调用程序都要做此项相同设置) 12,项目-->属性-->配置属性-->C/C++-->命令行-->附加选项,加入【/D "_CRT_SECURE_NO_DEPRECATE" 】(注:加入括号完整的内容),可修正如下提示错误 使用VS2005以上版本(VS2005、VS2008、VS2010)编译在其他编译器下正常通过的C语言程序,你可能会遇到类似如下的警告提示: 引用内容 warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>          c:/program files/microsoft visual studio 10.0/vc/include/string.h(105) : 参见“strcpy”的声明 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>          c:/program files/microsoft visual studio 10.0/vc/include/stdio.h(234) : 参见“fopen”的声明 原因解释 这种微软的警告,主要因为那些C库的函数,很多函数内部是不进行参数检测的(包括越界类的),微软担心使用这些会造成内存异常,所以就改写了同样功能函数,改写了的函数进行了参数的检测,使用这些新的函数会更安全和便捷。关于这些改写的函数你不用专门去记忆,因为编译器对于每个函数在给出警告时,都会告诉你相应的安全函数,查看警告信息就可以获知,在使用时也再查看一下MSDN详细了解。库函数改写例子:
稀缺资源 iOS应用逆向工程: 分析与实战是iOS应用逆向工程方面的权威著作,三位作者都是iOS领域内的专家,拥有扎实的理论知识和丰富的实践经验。本书内容以工具+代码的形式全面、系统地展开知识点,由浅入深,图文并茂地带着读者一步步探索常规iOS App之外的世界。 《iOS应用逆向工程:分析与实战》分为四大部分,分别是概念、工具、理论和实战。前三部分介绍iOS逆向分析领域的背景、知识体系,以及相应的工具集、理论知识;第四部分则通过4个实际案例来将前面的知识以实战的方式展开。第一部分为概念篇,简单介绍iOS逆向分析的概念以及iOS平台系统架构。第二部分为工具篇,介绍一系列基于Mac和iOS平台的配套工具,并且重点讲解其的class-dump、Theos、Reveal、IDA、GDB等5个工具的使用方法,前3个侧重于使用,后2个侧重于分析。第三部分为理论篇,主要讲述iOS逆向/越狱方向的进阶必备理论知识。第四部分为实战篇,通过对3个App Store App及1个系统App进行逆向分析的实战操作,让读者能够了解并同步实践已掌握的知识。 iOS应用逆向工程:分析与实战 目录: 推荐序一 推荐序二 自序 前言 第一部分 概念篇 第1 章  iOS 逆向工程简介 2 1.1  iOS 软件逆向工程的要求 2 1.2  iOS 软件逆向工程的作用 2 1.2.1  与安全相关的iOS 逆向工程 4 1.2.2  与开发相关的iOS 逆向工程 5 1.3  iOS 软件逆向工程的一般过程 6 1.3.1  系统分析 7 1.3.2  代码分析 7 1.4  iOS 软件逆向工程用到的工具 8 1.4.1  监测工具 8 1.4.2  开发工具 9 1.4.3  反编译器 9 1.4.4  调试器 10 1.5  小结 11 第2 章 越狱iOS 平台简介 12 2.1  iOS 系统架构 12 2.1.1  iOS 目录结构 13 2.1.2  iOS 文件权限 15 2.2  iOS 程序类型 16 2.2.1  Application 16 2.2.2  Dynamic Library 19 2.2.3  Daemon 19 2.3  小结 20 第二部分 工具篇 第3 章 Mac 工具集 22 3.1  class-dump 22 3.1.1  class-dump 介绍及下载 22 3.1.2  class-dump 使用演示 23 3.1.3  关于class-dump 的补充说明 25 3.2  Theos 25 3.2.1  Theos 简介 25 3.2.2  Theos 安装及编译 26 3.2.3  Theos 用法简介 28 3.2.4  Theos 开发tweak 示例 47 3.3  Reveal 49 3.3.1  Reveal 简介 49 3.3.2  Reveal 安装及功能扩展 50 3.4  IDA 55 3.4.1  IDA 简介 55 3.4.2  IDA 使用说明 56 3.4.3  IDA 分析示例 65 3.5  其他工具 68 3.5.1  iTools 68 3.5.2  dyld_decache 69 3.5.3  MesaSQLite 69 3.6  小结 70 第4 章 iOS 工具集 71 4.1  SBSettings 71 4.2  MobileSubstrate 72 4.3  OpenSSH 73 4.4  GDB 74 4.4.1  GDB 简介 74 4.4.2  GDB 的使用说明 74 4.5  Cycript 85 4.6  其他常用工具 88 4.6.1  BigBoss RecommendedTools 88 4.6.2  AppCrackr 88 4.6.3  iFile 89 4.6.4  MobileTerminal 89 4.6.5  Vi IMproved 90 4.6.6  SQLite 90 4.6.7  top 91 4.6.8  syslogd 92 4.7  小结 92 第三部分 理论篇 第5 章  Objective-C 相关的iOS逆向理论基础 94 5.1  tweak 的作用原理 94 5.1.1  Objective-C 语言的特性 94 5.1.2  MobileSubstrate 96 5.2  tweak 的编写套路 97 5.2.1  灵感的来源 98 5.2.2  分析文件,寻找切入点 99 5.2.3  定位目标函数 102 5.2.4  测试函数
首先关于 [评价可免费] 的严重声明: 一、评价=评论加评价(评星星); 二、评价必须是下载完了该资源后的评价,没下载就评论无效; 三、如果正确评价了,返还积分可能需要等等,系统需要反应下。呵呵 评论时记得要评分。然后会返回给你花费的分再加1分.理论上有十分就可以下载完所有的资源了。一般人我不告诉他。 所谓动态分析是利用调试器,如OllyDBG一步一步地单步执行软件。常见的调试器有SoftICE,OllyDBG(简称OD)等。SoftICE是一款经典的调试工具,运行在Ring0级,可以调试驱动。但平时调试的程序都是Ring3级,因此推荐大家用OllyDBG,这款工具上手容易,功能十分强大,现在论坛上的文章基本都是用OllyDBG来讲解的。 Olldbg常见问题 Q: OD如何运行到光标所在处? A: 将光标移到目标位置,按F4. Q: 如何用OD修改可执行程序? A:直接在反汇编代码区更改,这时可以使用汇编代码更改,然后选修改后的汇编代码,右击-->复制到可执行文件-->保存文件. Q:OD的代码乱码,如: 004365E0 >db 68 ; CHAR 'h' 004365E1 >db A4 004365E2 >db 7A ; CHAR 'z' 004365E3 >db E5 004365E4 >db B8 004365E5 >db E8 004365E6 >db BB A:OD右键,"分析/从模板删除分析",如不行,按Ctrl+A重新分析 Q:OD为什么删除了断点,重新加载的时候,这些断点都会重新出现 A:设置ollydbg.ini,将配制文件里改成如下:Backup UDD files=1 (by kanxue) Q:如何还原到OD到分析前的状态? A:右键 分析/从模块删除扫描 Q:什么是UDD? A:OllyDbg 把所有程序或模块相关的信息保存至单独的文件,并在模块重新加载时继续使用。这些信息包括了标签、注释、断点、监视、分析数据、条件等等 Q:OD的数据窗口显示一个下划线,是什么意思? A:重定位加下划线[Underline fixups],几乎所有的DLL和一部分程序都包含重定位,这样就可以在内存的不同基地址加载模块了。当该项开启时,CPU反汇编窗口或CPU数据窗口的重定位地址都将添加下划线。(xing_xsz) Q:如果已经知道某一CALL的具体作用,能否把后面所有相同的CALL都改成函数名形式? A:比如 CALL 110000 此已经知道110000是一个核心计 则如下操作,让光标停在CALL 110000 这个语句上,按回车键 会跳到110000的地址上去显示,之后让光标停在110000上,按 shift 和; (分号) 其实就是完成一个:(冒号)的动作,输入 名称,这回所有的调用110000处,都会显示CALL 你刚才输入的 名称了.(nig回答) Q:用OD调试一些加壳程序,如Themida等,可能你会发现下断后(包括硬件断点),程序跑到断点时,OD会出现假死现像。 A:打开OD配置文件ollydbg.ini,你会发现:Restore windows= 123346 //这个Restore windows可能会是一个很大的值 现在只需要将Restore windows=0,重新用OD调试程序,假死问题就消失了。 (kanxue) Q:ollydbg如何调用pdb文件? A: pdb文件是VC++调试编译生成的文件。由编译器直接生成。 pdb文件要配合源文件使用。不同的源文件pdb文件不同。 用OD装入可执行文件后,点击CPU窗口的注释段可出现源码。 不过不是所有的源码都可以显示的。VC++6.0以下都可以显示。 还有一种不显示的原因是缺少路径。点击OD主菜单的[查看]->[源文件] 如果[源码]段出现(缺少)字样的话,说明此路径的源码是看不了的。设置正确的路径就可以了。 (nantz回答) Q:运行A.exe,其会调用B.exe,如果用OD再附加B.exe,OD会死掉 A: 1.OD菜单,设置OD为即时调试器; 2.将B.exe的入口改成CC,即INT 3指令,同时记下原指令 3.运行A.exe,其调用B.exe,会导致异常,OD会自动启动加载B.exe,此时你将INT 3指令恢复原指令。 4.到这步,你己可以任意调试B.exe了(kanxue) Q:用ollydbg调试的时候,断住kernel32.dll系统函数,然后”执行到用户代码“,就可以回到被调程序的代码。但有时候却回不来,不知道这又是为什么? A: 多半是杀毒软件(如卡巴对LoadLibraryA)Hook API入口代码进入ring 0了,OllyDbg不能单步跟踪,这种情况下只要看堆栈返回地址,在返回地址上下端点,F9执行就可以了。(cyclotron回答) Q:OD的“复制可执行文件”后面没有 “所有修改”的菜单 A:OD识别代码段范围失败后, 没有复制all modifications的选项, 因为这个是复制代码段内的修改的。(曾半仙回答) Q:OD里的patch窗口怎么用? A:patch窗口用来保存你在调试的程序修改过的代码的。比如你前面调试了一个程序,在OD把某处的JE改成了JMP,OD会在patch记录这个修改,你下次再重新载入程序时,就能在OD的patch窗口看到你原来改动的代码。按空格键就可以激活patch,就是在OD还把原来位置的JE改成JMP。这个只是在OD作更改,并没有实际保存到文件,主要是比较方便在OD修改程序时测试。(CCDebuger回答)

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧