"同类软件的鼻祖” Seer 抄走了我的 GPL 代码去卖钱…… - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xupefei
V2EX    程序员

"同类软件的鼻祖” Seer 抄走了我的 GPL 代码去卖钱……

  xupefei
xupefei 2017-07-30 22:02:37 +08:00 26630 次点击
这是一个创建于 3073 天前的主题,其中的信息可能已经有所发展或是发生改变。

先放一张图:

lol

真的如此吗?

背景

我在几个月前做了一个类似苹果系统 Quick Look 的工具(Github 链接;当时在 V2EX 发的帖子在此),开发初衷正是因为我觉得 Seer 不太好用,且不开源&收费的模式让我有些不爽。

之后经过不断地改进,在 0.2.0 版本中(链接),我加入了预览打开 /保存对话框中文件的功能。其他同类的软件,包括 Seer,都没有实现这个功能(可能是因为他们的对 Windows 底层的了解太弱了)。同时,为了保护我的成果不被随意使用,我把项目的开源协议从 LGPL 换成了更严格的 GPL,以保证没人能闭源使用用我的代码。然而,这对收费的闭源软件 Seer 来说并没有什么用。

Seer 抄了啥?

先给个简单的列表:

  1. 对话框 Hook 注入部分的代码
  2. 对话框 Hook 被注入的 DLL 的代码
  3. Directory Opus 兼容部分的相关代码
  4. (不确定)UWP 判断代码

有啥证据?

刚刚发布的 Seer 1.5.0 包含了上述抄袭的代码,而且抄走的代码逻辑几乎完全没有变化,能看着他的汇编完美还原出(我的)包含变量定义的源代码。 我在截图中附加了我代码中的一些注释便于各位理解;截图汇编来自 Seer 1.5.0 的 Seer.exe (1E44DB795A8D4D7CBE5D2024ECF168FF) 和 DlgHook.dll (161471A6F9785EA4A35887060B8743E1) 。右侧的代码来自这里

1. 对话框注入代码

Seer 的作者看上去并不是十分理解我代码的意思,因为他抄过去的代码没什么用……

为什么这么说呢?首先,我的程序是 64 位的,为了注入到 32 位进程里,我用了 IsWowProcess API 来判断 (i) 自身是否在 32 位上运行 (ii) 目标程序是否是 32 位。如果 (i) 不成立且 (ii) 成立,就调用一个独立的 32 位 Helper.exe 把 DLL 注入到目标进程里。然而,Seer 本身是 32 位进程且没有 64 位的 Helper。也就是说,他判断了好几次,最后啥都没干直接 return 了。

不过,令人欣慰的是 Seer 把 if(!isTragetWoW64)条件改了,没有盲目粘贴。

Dialog Hook

2. 对话框被注入的 DLL 代码

懒得解释了,一看就明白。 那个 WM_USER+7 不是我发现的,是网上流传的未公开消息。 Dialog Hook DLL

3. Directory Opus 相关代码

Directory Opus 官方只给了一个独立的 exe 用以和第三方交互,而且这个 exe 只支持把结果写到文件里。于是乎,Seer 1.4.0 就每隔 0.x 秒运行那个 exe、写结果到文件、读文件,疯狂占用 CPU 和 IO。为了避免这个问题,我逆向了官方提供的那个 exe,发现了未公开的 WM_COPYDATA 消息(逆向结果在此)并用到了我的 QuickLook 里。

Seer 1.5.0 版本里就把它抄走了……哦不,没有完全照抄,作者把等待的 2000 毫秒改成了 800 毫秒。不过这也太明显了吧,连前四行 if 判断都没改就放进来了。

dopus

4. UWP 判断代码 (不确定)

我不确定 Seer 作者是不是自己发现判断 ERROR_INSUFFICIENT_BUFFER 就够了,而不用申请内存后再次调用(网上的代码大都是两次调用)。

IsUWP

发帖的诉求是啥?

看到这里,相信各位已经对是否抄袭这个事实有一个结论了。我的代码受 GPLv3 协议的保护:任何使用它的人都必须遵守协议,把所有相关代码以 GPLv3 协议开源。既然 “ decent ” 是 Seer 的作者 idealistcorey 非常看重的东西,那么请自觉遵守 GPLv3 协议,把 Seer 1.5.0 版本的代码以 GPLv3 协议开源,即使你接下来把相关代码完全重写

另外要告诫 Seer 作者:别人的代码不是复制粘贴就可以的

最后作为对比,人家 Sekai Project 就很有版权意识,就算是想要用用 LGPL 协议的 Locale Emulator 都先来发个邮件问问:

Sekai

更别说大企业了:

apng

谢谢各位读到这里。

PS:某人的水平也太差了吧,对话框 HOOK 的 Helper.exe 源代码都在那儿,你都抄不走?

第 1 条附言    2017-08-01 02:18:00 +08:00
Seer 的作者决定把 1.5.0 版本(去除公司代码和侵权代码后)开源: https://github.com/ccseer/Seer

此事件完美结束。谢谢各位的支持。

158 条回复    2019-09-26 11:03:12 +08:00
1  2  
plqws
    1
plqws  
   2017-07-30 22:06:35 +08:00   1
原来楼主是开发 LE 的大佬啊,LE 真的是个很好用的工具。
Nitroethane
    2
Nitroethane  
   2017-07-30 22:10:01 +08:00 via Android
支持 lz,强烈鄙视这种抄袭别人劳动成果的行为。
UnisandK
    3
UnisandK  
   2017-07-30 22:10:18 +08:00
前排围观技术型打脸
swulling
    4
swulling  
   2017-07-30 22:13:26 +08:00
Seer 作者的微博签名是『理想主义者』,也是讽刺
skadi
    5
skadi  
   2017-07-30 22:14:58 +08:00 via Android
围观一个
miyuki
    6
miyuki  
   2017-07-30 22:17:38 +08:00 via Android
持续关注
geelaw
    7
geelaw  
   2017-07-30 22:18:10 +08:00 via iPhone
一开始我觉得可能是 clean room,不过看了分析我觉得不是,支持楼主。

另外提醒 WM_USER+7 乱用可以带来兼容性问题。
FanWall
    8
FanWall  
   2017-07-30 22:18:43 +08:00
围观
xiaozizayang
    9
xiaozizayang  
   2017-07-30 22:19:26 +08:00
支持作者 好生气
misaka19000
    10
misaka19000  
   2017-07-30 22:23:16 +08:00 via Android
强烈要求 Seer 依照 GPL 把代码开源,否则就真是不要脸了
missdeer
    11
missdeer  
   2017-07-30 22:43:16 +08:00
Seer 作者上 V2EX 么?
Chingim
    12
Chingim  
   2017-07-30 22:51:36 +08:00   15
这种抗争我喜欢, 至少最后不会和对方签保密协议, 然后当做什么都没发生
XhstormR
    13
XhstormR  
   2017-07-30 23:14:55 +08:00 via Android
@Chingim 笑尿
seeker
    14
seeker  
   2017-07-30 23:42:31 +08:00
想起了 Potatso 由开源到闭源的命运
wusibacg
    15
wusibacg  
   2017-07-30 23:46:02 +08:00
支持作者
另外想说个题外话,作者的软件有支持 win7 么? 我用的时候预览窗口后面会拖着一块毛玻璃。。win7 x64
1ychee
    16
1ychee  
   2017-07-30 23:53:06 +08:00   51
@xupefei 我们网店出售 Seer,如果属实,我们会下架 Seer,除非开发商能够和您达成一定的协议。

商品链接: https://www.lizhi.io/product/seer
terrawu
    17
terrawu  
   2017-07-30 23:55:36 +08:00
@1ychee 「数码荔枝」好顶赞啊.
PP
    18
PP  
   2017-07-30 23:57:50 +08:00 via iPad
支持打假,鼓励质证。
Mistwave
    19
Mistwave  
   2017-07-31 00:08:35 +08:00 via iPhone
LE 的作者!很好用的软件,感谢感谢
HowardMei
    20
HowardMei  
   2017-07-31 00:16:45 +08:00 via Android   1
支持维权,最讨厌自我标榜的人,十个有十个是伪君子。
frittle
    21
frittle  
   2017-07-31 00:24:12 +08:00
支持。p.s. LE 真好用。
anyele
    22
anyele  
   2017-07-31 00:33:28 +08:00 via Android
eloah
    23
eloah  
   2017-07-31 00:35:41 +08:00
支持一下
qweqqwe
    24
qweqqwe  
   2017-07-31 00:40:57 +08:00 via Android
帮顶一下!
loveuqian
    25
loveuqian  
   2017-07-31 00:41:47 +08:00 via iPhone
膜拜 dalao
davy1995
    26
davy1995  
   2017-07-31 00:59:50 +08:00 via Android
不过感觉这个事在国内作为一个独立开发很难维权吧,唯一能帮忙的就是让那个抄袭名声烂掉了
crisfun
    27
crisfun  
   2017-07-31 01:01:34 +08:00
这个事情告诉我们,不会逆向可以说不是人了 #滑稽

才听说这个软件,下载来用用
senghoo
    28
senghoo  
   2017-07-31 01:04:21 +08:00 via iPad
支持楼主,只有这种维权多起来才有助于国内的版权意识提升
jy01264313
    29
jy01264313  
   2017-07-31 01:12:49 +08:00
支持楼主,希望国内法律健全起来
01802
    30
01802  
   2017-07-31 01:23:13 +08:00 via Android
支持楼主,法规和案例都是一点点较真来的
6388xE5FRKTNUT9x
    31
6388xE5FRKTNUT9x  
   2017-07-31 01:28:47 +08:00 via Android
支持楼主,看看那位幻想家怎么回复了
longaiwp
    32
longaiwp  
   2017-07-31 02:07:25 +08:00
支持
cnnblike
    33
cnnblike  
   2017-07-31 02:54:52 +08:00 via iPhone
le 很好用+楼主这事情占理
gigantic222
    34
gigantic222  
   2017-07-31 05:14:36 +08:00 via iPhone
支持并膜拜大佬一记
ermao
    35
ermao  
   2017-07-31 08:01:10 +08:00 via Android
………大佬就是大佬!支持
R18
    36
R18  
   2017-07-31 08:27:49 +08:00
对此事件表示持续关注
Shura
    37
Shura  
   2017-07-31 08:44:22 +08:00 via Android
凭实力抄的代码,凭什么要开源?
jy02201949
    38
jy02201949  
   2017-07-31 09:03:10 +08:00
我以为 V 友会去抄袭者微博婊他,想不到评论里一片和谐,不过这个抄袭的说是下架了正在跟楼主沟通
shakoon
    39
shakoon  
   2017-07-31 09:08:44 +08:00
支持楼主维权。技术水平需要和道德水平同步增长,才是个好程序员。
hhacker
    40
hhacker  
   2017-07-31 09:09:56 +08:00
百分百源自某些人对开源项目的百分百既得利益既视感
goodan
    41
goodan  
   2017-07-31 09:13:46 +08:00
给 dalao 递茶,支持维权
oska874
    42
oska874  
   2017-07-31 09:15:33 +08:00
啥都别说了,抄袭了就走法律途径。
wupher
    43
wupher  
   2017-07-31 09:16:11 +08:00
支持作者维权
Keyes
    44
Keyes  
   2017-07-31 09:28:51 +08:00
@swulling 以后改成“拿来主义者”好了,23333
zpf124
    45
zpf124  
   2017-07-31 09:35:41 +08:00
软件作者承认了用了 楼主的代码了,接下来就是看大戏的时刻了。

顺道膜拜大佬...
aaronly
    46
aaronly  
   2017-07-31 10:02:09 +08:00
支持楼主
pb941129
    47
pb941129  
   2017-07-31 10:10:54 +08:00
支持楼主~~~
L1403749842
    48
L1403749842  
   2017-07-31 10:12:23 +08:00
支持楼主维权~
jsjjdzg
    49
jsjjdzg  
   2017-07-31 10:23:09 +08:00
支持楼主,卖 69 呢 = =
barbery
    50
barbery  
   2017-07-31 10:38:13 +08:00
支持维权,有理有据
seki
    51
seki  
   2017-07-31 10:44:23 +08:00
支持维权
heiybb
    52
heiybb  
   2017-07-31 11:14:55 +08:00 via Android
支持大佬
mornlight
    53
mornlight  
   2017-07-31 11:25:43 +08:00
更新了:
RainySeason
    54
RainySeason  
   2017-07-31 11:28:00 +08:00
LE 很好用+1,支持大佬_(:з」∠)_
recall704
    55
recall704  
   2017-07-31 11:38:49 +08:00
持续关注
wsy2220
    56
wsy2220  
   2017-07-31 11:43:02 +08:00
支持一个
SuperMild
    57
SuperMild  
   2017-07-31 11:50:24 +08:00
抄袭的成本真的太低,就算最后证据确凿,认个怂就过去了,几乎不用付出代价。
victor
    58
victor  
   2017-07-31 11:54:01 +08:00
对不起是认为自己做错事了,而抱歉是说不好意思(我靠怎么被发现了,这下难堪了)
xiaket
    59
xiaket  
   2017-07-31 11:58:12 +08:00
吃瓜群众表示直接撤下就没事了?不懂 GPL 是什么东西?
missdeer
    60
missdeer  
   2017-07-31 12:01:21 +08:00
犯错成本果然很低么?
Hello1995
    61
Hello1995  
   2017-07-31 12:04:14 +08:00 via Android   3
后排提示,GPL 污染就应该把该版本开源,否则就会永远被挂在耻辱柱上
anheiyouxia
    62
anheiyouxia  
   2017-07-31 12:06:16 +08:00 via Android
持续关注这件事


@1ychee 看来作者是承认这件事了,可以下架了
1ychee
    63
1ychee  
   2017-07-31 12:17:50 +08:00
@xupefei
@anheiyouxia

已暂时下架,并持续关注。
chilaoqi
    64
chilaoqi  
   2017-07-31 12:44:49 +08:00   1
Seer 作者这些标签 “理想主义者” “ decent ” 怎么听着十分老罗啊

这是老罗被黑的最技术的一次。。。
chinvo
    65
chinvo  
   2017-07-31 12:49:55 +08:00   1
作者撤回了版本,坐等大戏
sampeng
    66
sampeng  
   2017-07-31 13:07:48 +08:00
这个没法走法律途径吧?开源协议受我国法律保护么?
dangge
    67
dangge  
   2017-07-31 13:09:54 +08:00
支持一下楼主
另外可以伸手求一下微博那张图的渲染方式么?是 mactype 还是 DirectWrite ?可以分享一下配置吗?感谢
usedname
    68
usedname  
   2017-07-31 13:16:17 +08:00
Seer 大写的恶心,已计入黑名单小本本
virtualworld
    69
virtualworld  
   2017-07-31 13:16:23 +08:00
纯粹吐槽一下,ditto 算不上是鼻祖吧?比他早的多了去了
Izual_Yang
    70
Izual_Yang  
   2017-07-31 13:19:28 +08:00 via Android
只用过 seer 0.8 的路过,这玩意似乎还没适配 totalcmd
crispgm
    71
crispgm  
   2017-07-31 13:22:17 +08:00 via iPhone
支持维权! GPL 不容侵犯
enlau0912
    72
enlau0912  
   2017-07-31 13:44:29 +08:00
幻想家 Corey - 抄主者~ 跟版有什不一,好意思,。
shuson
    73
shuson  
   2017-07-31 13:57:00 +08:00
最后还不忘夸奖我司
witcherhope
    74
witcherhope  
   2017-07-31 15:05:58 +08:00 via Android
对方撤下了当前版本,按照 GPL 协议应该开源!要对方承担后果,GPL 协议不是开玩笑的
Felldeadbird
    75
Felldeadbird  
   2017-07-31 15:17:37 +08:00
撤下来有什么用呢?都用了 GPL,该软件就应该开源出来。
ljcarsenal
    76
ljcarsenal  
   2017-07-31 15:29:43 +08:00
windows 客户端编程大佬 这年头不多见了
Kirscheis
    77
Kirscheis  
   2017-07-31 15:45:31 +08:00
赞楼主逆向能力
发现楼主还写了 Locale Emulator,基本上每次偶尔用到 windows 平台都必装的工具之一,感谢
halicando
    78
halicando  
   2017-07-31 16:14:55 +08:00
一个帖子既维了权又实力圈了一波粉,赞楼主!
20015jjw
    79
20015jjw  
   2017-07-31 16:20:08 +08:00 via Android
给楼主点赞 抄代码卖钱垃圾 差评
20015jjw
    80
20015jjw  
   2017-07-31 16:20:37 +08:00 via Android
@20015jjw 以及 decency 才是东西 decent 是形容词
quinoa42
    81
quinoa42  
   2017-07-31 16:48:02 +08:00
感谢楼主写了 LE
breaklayer
    82
breaklayer  
   2017-07-31 16:50:47 +08:00
支持 lz,抄代码卖钱垃圾 Seer 大写的恶心
xupefei
    83
xupefei  
OP
   2017-07-31 17:28:46 +08:00   4
Seer 作者和我邮件沟通了。他表示因为代码中使用了一些属于公司的代码,所以无法开源。我表示无能为力。
邮件里说的“以前”指的是几年以前我曾经帮助他修复了文本框的识别问题。当时 Seer 好像还是免费软件来着。具体请搜索 “ Windows 有没有类似 MAC 中的 quicklook 功能的软件啊? zhihu ”

auhah
    84
auhah  
   2017-07-31 17:30:06 +08:00
膜拜大佬。
bookit
    85
bookit  
   2017-07-31 17:34:42 +08:00
自我标榜的一般不是好东西
verrickt
    86
verrickt  
   2017-07-31 17:39:32 +08:00 via Android
持续关注
mcone
    87
mcone  
   2017-07-31 18:13:12 +08:00
这种协议污染 可不是简单下架撤回这么简单啊 不然的话违法成本这么低 协议还有什么用 都给成 WTF 协议好了

另外 这个作者难道没有 v2 账号吗 个人是不太相信的这种无力的解释的……
bolide2005
    88
bolide2005  
   2017-07-31 18:16:51 +08:00
收藏了,持续关注,支持楼主
harry890829
    89
harry890829  
   2017-07-31 18:18:13 +08:00
啊,不知道能否和大佬讨论下 Windows 下钩子的问题,我最近正好在捕捉扫码枪的东西,但是效果并没有想象中的好
Lawlieti
    90
Lawlieti  
   2017-07-31 18:26:42 +08:00
3000 就解决完事了?
hikarugo
    91
hikarugo  
   2017-07-31 18:27:55 +08:00
尼玛,我就说一句。。。如果楼主没有反汇编这种技术,是不是这个事永远不会被发现?一方面反映了国内确实版权意识太低,另一方面是不是也体现出如果没有对应的技术能力,连自己的版权都维护不好。退一步说,就算现在发现了,还不知道这个事有没有个信服的结果。。好忧伤的感觉
xupefei
    92
xupefei  
OP
   2017-07-31 18:53:19 +08:00
各位对软件有疑问/建议的,还请去 Github 发 issue,这里要跟进太麻烦了。

@dangge 4K 显示器+DPI 200%+Chrome 原生 DirectWrite。
@Lawlieti 我没要钱。
@fyxtc @mcone 他在个人项目里“用公司代码”和“用我的代码”是两回事儿。他要怎么解决这个冲突我不知道,和帖子里的这件事儿也无关,等后续吧。不过就算接下来没有后续我也不会觉得奇怪。
mritd
    93
mritd  
   2017-07-31 19:08:07 +08:00 via iPhone   1
以用公司代码为理由就糊弄过了? 人做事要承担后果,杀了人 来一句 我得照顾父母就完了,GPL 闹着玩呢
ysc3839
    94
ysc3839  
   2017-07-31 19:45:41 +08:00 via Android
@harry890829 扫码枪?是不是扫码后会直接模拟键盘输入?你想通过软件读取?
mikeven
    95
mikeven  
   2017-07-31 20:09:49 +08:00
居然是 LE 的大佬!!
lzsadam
    96
lzsadam  
   2017-07-31 20:10:12 +08:00
楼主这样的人应该再多一些,支持维权,关注后续结果。
tairan2006
    97
tairan2006  
   2017-07-31 20:32:45 +08:00
支持楼主~

不过看来对方的态度也很好,就私下解决吧~
ErnestChan
    98
ErnestChan  
   2017-07-31 20:48:43 +08:00
@1ychee #16 avast 你们有优惠渠道吗?学生想入正版,又有些不舍得剁手。
tomczhen
    99
tomczhen  
   2017-07-31 21:01:25 +08:00
@tairan2006
有私下解决这种操作?

GPL 开源项目作者可以私下允许开源代码被他人闭源商用?

这样理解的话,开源协议中对引用开源代码者的相关要求是源码所有者的权利而非开源协议的权利?

退一步讲,就算作者本身不追责,也改变不了侵权者违反开源协议使用开源代码的事实吧?

那么“私下解决”该是如何操作呢?
tomczhen
    100
tomczhen  
   2017-07-31 21:07:23 +08:00
@harry890829
刚好对条码枪这块有点了解,不过对 Windows 钩子这块没什么了解。

条码枪有两种工作模式,一种是键盘模式,一种是串口模式。

键盘模式下就是模拟键盘输入,如果想单独监听条码枪,个人感觉除非可以识别到输入来自具体的设备信息才有可能实现单独监听条码枪。

至于串口模式,一般低端型号是没有这种工作模式的,支持串口工作模式的条码枪通常需要设置之后才能启用(扫描特殊条码的方式设置,各个厂家有差异,甚至同厂家不同型号也有差异)。
1  2  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5634 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 48ms UTC 01:56 PVG 09:56 LAX 17:56 JFK 20:56
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86