Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve smooth and phone battery life #540

Closed
wants to merge 2 commits into from
Closed

Improve smooth and phone battery life #540

wants to merge 2 commits into from

Conversation

RimuruW
Copy link

@RimuruW RimuruW commented May 16, 2020

No description provided.

@RimuruW RimuruW closed this May 16, 2020
@pppwaw pppwaw mentioned this pull request May 16, 2020
@iamapig120
Copy link

What's the fxxk you have do.

@RimuruW
Copy link
Author

RimuruW commented May 17, 2020

  Because most of the victims are Chinese, I decide to use Chinese to state this matter to make them easier to learn about.
  
  我想是时候说清楚,以我的视角下这次事件的前因后果。
  
  在 16 日下午五点左右,出于某些原因,我意外看到了一名用户在 EdXposed 仓库提交了一个 pull request,内容包含 rm -rf /data,即 #537。我觉得这个提交非常有意思,顺手也补了一个 pull request,即 #540
  我当时只出于打算对开发者开一个玩笑提交了这个 pull request。整个提交只有一行修改,我以为开发者看到会直接 close,根本没想到会被直接自动编译并推送……现在想起来觉得当时自己智障到了极点…
  因为第二天还有考试,我提交完就去看书复习了,直到有某位朋友告诉我有人因为 Canary 通道含恶意代码的 EdXposed 模块,手机被格式化,数据全部丢失,我才知道我做了一件多么愚蠢的事情……
  
  
  在开始下面陈述之前,请先允许简单介绍一下我和另一个人添加的代码的意思。
  
  第一个人添加的代码中的 rm -rf 可以简单理解为删除某个文件夹,rm -rf /data 即为删除根目录下的 Data 文件夹。导致大部分用户数据丢失的代码就是 rm -rf /data/media,意思即为删除根目录下 /data/media 文件夹。因为 /data/media 下是手机的内置存储,所以该指令会导致手机内置存储被清空。
  
  我添加的代码是 rm -rf /data/data && chattr -R +i /data。这个代码前半部分和上面同理,意思是删除根目录下的 /data/data 文件夹。后半部分的意思是锁定根目录下的 Data 文件夹,被锁定的文件夹无法被修改(比如删除、重命名、写入内容)。
  这里有必要再介绍一下 /data/data 下是什么东西。
  大部分用户对刷机都非常熟悉,刷机中的“双清+格式化 Data”一般被认为等于手机恢复出厂设置,而双清中的一个清理即为清理 Data,即我上面所说的,根目录下的 Data 文件夹。而在 TWRP 中,清理 Data 会默认跳过 /data/media,这也是为什么清理了 Data 分区还要进行一次格式化 Data。/data/data 文件夹作为 Data 分区下的文件夹,存储了某些重要的系统文件,但是除 Termux 等比较特殊的软件,一般来说,没有任何用户重要的数据存储在这个文件夹下。如果你有 root 权限的话,你可以打开这个文件夹看看,/data/data 下大部分文件都是空的。就像你在 TWRP 中清理了 Data 分区后可以正常开机,你手机内置存储的文件不会在清理 Data 后丢失,而我这个指令只是清除 Data 分区下的的一个文件夹,一般来说,不会造成特别重大的损失(比如你手机里的照片和视频都不会丢失),但是还是会对大部分用户使用造成不可忽视的负面影响。
  再必须重点提及的是锁定 Data 分区。
  chattr +i 是 Linux 下锁定某一文件/目录的指令,其原意是为了锁定某一个特别重要的文件防止被进行任何修改。这个指令不会对你的数据造成任何破坏,相反,被锁定的数据不可能被进行任何更改。与之相应的,因为禁止读写,手机也无法正常使用。这个问题可以通过输入 chattr -i 解除锁定。
  

  我很难说我是无辜的,但是我在提交前真的不知道也根本没想到 pull request 会被直接自动编译,并直接推送到 Canary 通道,GitHub 界面也没有任何与之相关的提示,这也是我第一次 pull request。在此之前,我甚至不知道 EdXposed 有 Canary 通道。我无意伤害任何人,无意造成任何人的数据丢失。我在知道这件事后立即 close 了 pull request,一晚上没复习,疯狂浏览各平台的评论区和聊天记录,尽可能确保最快找到每一个刷了我的 build 的用户,避免有用户在 Data 被锁定后进行了进一步不正确的处理导致更让我后悔自责的结果。所幸的是,目前为止,还没有出现因为我的智障操作导致 Data 被锁定的用户。
  
  那天晚上我一直睡不着,直到第二天考试满脑子都是这件事。我一直在反思我的行为。我一直把学习编程和 Linux 使用当作自己学习之余的娱乐方式,也一直希望自己写的东西能给其他人带来便利。我愧对那些一直在我旁边鼓励我的人,我愧对我学习 Linux 路上那些对我不厌其烦地指导的人。我没能为开源做出贡献,反而让中国开发者的名声因我而蒙羞…我很害怕,害怕当时自己如果写的是 dd 命令,而又有用户刷入了这个 build,我可能很难再有勇气写代码了……
  
  我身边的朋友劝我这段时间避一避,毕竟我没有给任何用户造成直接性损失,也没有任何对其他用户的恶意。艰难挣扎下,我还是决定写这样一篇道歉书,或者更适合表述为我自己的一篇检讨书。我想,也许我朋友说得是对的,但是我还是有必要写一篇这样的道歉书。我不乞求大家能原谅我,只希望能把我导致这个结果的幼稚行为原原本本告诉大家,并表达我真切的歉意。我不知道能不能承受接下来的网络舆论压力,我不知道我是否应该继续在学习编程的路上走下去,我所能做的,就是尽可能祈祷这次事件对 EdXposed 造成的影响能降到最小了……

@TakiGuan
Copy link

Improve smooth and phone battery life?

@zcybupt
Copy link

zcybupt commented May 18, 2020

Shame on you.

@KeZengOo
Copy link

f**k u

@Liumxv
Copy link

Liumxv commented May 18, 2020

Z B C 无情哈拉少

@xyzcoconut
Copy link

  Because most of the victims are Chinese, I decide to use Chinese to state this matter to make them easier to learn about.
  
  我想是时候说清楚,以我的视角下这次事件的前因后果。
  
  在 16 日下午五点左右,出于某些原因,我意外看到了一名用户在 EdXposed 仓库提交了一个 pull request,内容包含 rm -rf /data,即 #537。我觉得这个提交非常有意思,顺手也补了一个 pull request,即 #540
  我当时只出于打算对开发者开一个玩笑提交了这个 pull request。整个提交只有一行修改,我以为开发者看到会直接 close,根本没想到会被直接自动编译并推送……现在想起来觉得当时自己智障到了极点…
  因为第二天还有考试,我提交完就去看书复习了,直到有某位朋友告诉我有人因为 Canary 通道含恶意代码的 EdXposed 模块,手机被格式化,数据全部丢失,我才知道我做了一件多么愚蠢的事情……
  
  
  在开始下面陈述之前,请先允许简单介绍一下我和另一个人添加的代码的意思。
  
  第一个人添加的代码中的 rm -rf 可以简单理解为删除某个文件夹,rm -rf /data 即为删除根目录下的 Data 文件夹。导致大部分用户数据丢失的代码就是 rm -rf /data/media,意思即为删除根目录下 /data/media 文件夹。因为 /data/media 下是手机的内置存储,所以该指令会导致手机内置存储被清空。
  
  我添加的代码是 rm -rf /data/data && chattr -R +i /data。这个代码前半部分和上面同理,意思是删除根目录下的 /data/data 文件夹。后半部分的意思是锁定根目录下的 Data 文件夹,被锁定的文件夹无法被修改(比如删除、重命名、写入内容)。
  这里有必要再介绍一下 /data/data 下是什么东西。
  大部分用户对刷机都非常熟悉,刷机中的“双清+格式化 Data”一般被认为等于手机恢复出厂设置,而双清中的一个清理即为清理 Data,即我上面所说的,根目录下的 Data 文件夹。而在 TWRP 中,清理 Data 会默认跳过 /data/media,这也是为什么清理了 Data 分区还要进行一次格式化 Data。/data/data 文件夹作为 Data 分区下的文件夹,存储了某些重要的系统文件,但是除 Termux 等比较特殊的软件,一般来说,没有任何用户重要的数据存储在这个文件夹下。如果你有 root 权限的话,你可以打开这个文件夹看看,/data/data 下大部分文件都是空的。就像你在 TWRP 中清理了 Data 分区后可以正常开机,你手机内置存储的文件不会在清理 Data 后丢失,而我这个指令只是清除 Data 分区下的的一个文件夹,一般来说,不会造成特别重大的损失(比如你手机里的照片和视频都不会丢失),但是还是会对大部分用户使用造成不可忽视的负面影响。
  再必须重点提及的是锁定 Data 分区。
  chattr +i 是 Linux 下锁定某一文件/目录的指令,其原意是为了锁定某一个特别重要的文件防止被进行任何修改。这个指令不会对你的数据造成任何破坏,相反,被锁定的数据不可能被进行任何更改。与之相应的,因为禁止读写,手机也无法正常使用。这个问题可以通过输入 chattr -i 解除锁定。
  

  我很难说我是无辜的,但是我在提交前真的不知道也根本没想到 pull request 会被直接自动编译,并直接推送到 Canary 通道,GitHub 界面也没有任何与之相关的提示,这也是我第一次 pull request。在此之前,我甚至不知道 EdXposed 有 Canary 通道。我无意伤害任何人,无意造成任何人的数据丢失。我在知道这件事后立即 close 了 pull request,一晚上没复习,疯狂浏览各平台的评论区和聊天记录,尽可能确保最快找到每一个刷了我的 build 的用户,避免有用户在 Data 被锁定后进行了进一步不正确的处理导致更让我后悔自责的结果。所幸的是,目前为止,还没有出现因为我的智障操作导致 Data 被锁定的用户。
  
  那天晚上我一直睡不着,直到第二天考试满脑子都是这件事。我一直在反思我的行为。我一直把学习编程和 Linux 使用当作自己学习之余的娱乐方式,也一直希望自己写的东西能给其他人带来便利。我愧对那些一直在我旁边鼓励我的人,我愧对我学习 Linux 路上那些对我不厌其烦地指导的人。我没能为开源做出贡献,反而让中国开发者的名声因我而蒙羞…我很害怕,害怕当时自己如果写的是 dd 命令,而又有用户刷入了这个 build,我可能很难再有勇气写代码了……
  
  我身边的朋友劝我这段时间避一避,毕竟我没有给任何用户造成直接性损失,也没有任何对其他用户的恶意。艰难挣扎下,我还是决定写这样一篇道歉书,或者更适合表述为我自己的一篇检讨书。我想,也许我朋友说得是对的,但是我还是有必要写一篇这样的道歉书。我不乞求大家能原谅我,只希望能把我导致这个结果的幼稚行为原原本本告诉大家,并表达我真切的歉意。我不知道能不能承受接下来的网络舆论压力,我不知道我是否应该继续在学习编程的路上走下去,我所能做的,就是尽可能祈祷这次事件对 EdXposed 造成的影响能降到最小了……

这已经算是破坏计算机系统罪了,有人报警的话,等着进局子里吧。
测试pull一定非要rm -rf /data ????????

@konkong
Copy link

konkong commented May 18, 2020

老哥可长点心吧,数据无价啊

@RimuruW
Copy link
Author

RimuruW commented May 18, 2020

老哥可长点心吧,数据无价啊

我的代码不会删除任何人的重要数据…而且目前为止没有任何人刷了我的 pr 构建的 build…也就是说我没有给任何人带来任何的数据损失……我可能就不应该出来承认吧,我纯粹是来找骂…

@RimuruW
Copy link
Author

RimuruW commented May 18, 2020

Because most of the victims are Chinese, I decide to use Chinese to state this matter to make them easier to learn about.
  
  我想是时候说清楚,以我的视角下这次事件的前因后果。
  
  在 16 日下午五点左右,出于某些原因,我意外看到了一名用户在 EdXposed 仓库提交了一个 pull request,内容包含 rm -rf /data,即 #537。我觉得这个提交非常有意思,顺手也补了一个 pull request,即 #540
  我当时只出于打算对开发者开一个玩笑提交了这个 pull request。整个提交只有一行修改,我以为开发者看到会直接 close,根本没想到会被直接自动编译并推送……现在想起来觉得当时自己智障到了极点…
  因为第二天还有考试,我提交完就去看书复习了,直到有某位朋友告诉我有人因为 Canary 通道含恶意代码的 EdXposed 模块,手机被格式化,数据全部丢失,我才知道我做了一件多么愚蠢的事情……
  
  
  在开始下面陈述之前,请先允许简单介绍一下我和另一个人添加的代码的意思。
  
  第一个人添加的代码中的 rm -rf 可以简单理解为删除某个文件夹,rm -rf /data 即为删除根目录下的 Data 文件夹。导致大部分用户数据丢失的代码就是 rm -rf /data/media,意思即为删除根目录下 /data/media 文件夹。因为 /data/media 下是手机的内置存储,所以该指令会导致手机内置存储被清空。
  
  我添加的代码是 rm -rf /data/data && chattr -R +i /data。这个代码前半部分和上面同理,意思是删除根目录下的 /data/data 文件夹。后半部分的意思是锁定根目录下的 Data 文件夹,被锁定的文件夹无法被修改(比如删除、重命名、写入内容)。
  这里有必要再介绍一下 /data/data 下是什么东西。
  大部分用户对刷机都非常熟悉,刷机中的“双清+格式化 Data”一般被认为等于手机恢复出厂设置,而双清中的一个清理即为清理 Data,即我上面所说的,根目录下的 Data 文件夹。而在 TWRP 中,清理 Data 会默认跳过 /data/media,这也是为什么清理了 Data 分区还要进行一次格式化 Data。/data/data 文件夹作为 Data 分区下的文件夹,存储了某些重要的系统文件,但是除 Termux 等比较特殊的软件,一般来说,没有任何用户重要的数据存储在这个文件夹下。如果你有 root 权限的话,你可以打开这个文件夹看看,/data/data 下大部分文件都是空的。就像你在 TWRP 中清理了 Data 分区后可以正常开机,你手机内置存储的文件不会在清理 Data 后丢失,而我这个指令只是清除 Data 分区下的的一个文件夹,一般来说,不会造成特别重大的损失(比如你手机里的照片和视频都不会丢失),但是还是会对大部分用户使用造成不可忽视的负面影响。
  再必须重点提及的是锁定 Data 分区。
  chattr +i 是 Linux 下锁定某一文件/目录的指令,其原意是为了锁定某一个特别重要的文件防止被进行任何修改。这个指令不会对你的数据造成任何破坏,相反,被锁定的数据不可能被进行任何更改。与之相应的,因为禁止读写,手机也无法正常使用。这个问题可以通过输入 chattr -i 解除锁定。
  
  我很难说我是无辜的,但是我在提交前真的不知道也根本没想到 pull request 会被直接自动编译,并直接推送到 Canary 通道,GitHub 界面也没有任何与之相关的提示,这也是我第一次 pull request。在此之前,我甚至不知道 EdXposed 有 Canary 通道。我无意伤害任何人,无意造成任何人的数据丢失。我在知道这件事后立即 close 了 pull request,一晚上没复习,疯狂浏览各平台的评论区和聊天记录,尽可能确保最快找到每一个刷了我的 build 的用户,避免有用户在 Data 被锁定后进行了进一步不正确的处理导致更让我后悔自责的结果。所幸的是,目前为止,还没有出现因为我的智障操作导致 Data 被锁定的用户。
  
  那天晚上我一直睡不着,直到第二天考试满脑子都是这件事。我一直在反思我的行为。我一直把学习编程和 Linux 使用当作自己学习之余的娱乐方式,也一直希望自己写的东西能给其他人带来便利。我愧对那些一直在我旁边鼓励我的人,我愧对我学习 Linux 路上那些对我不厌其烦地指导的人。我没能为开源做出贡献,反而让中国开发者的名声因我而蒙羞…我很害怕,害怕当时自己如果写的是 dd 命令,而又有用户刷入了这个 build,我可能很难再有勇气写代码了……
  
  我身边的朋友劝我这段时间避一避,毕竟我没有给任何用户造成直接性损失,也没有任何对其他用户的恶意。艰难挣扎下,我还是决定写这样一篇道歉书,或者更适合表述为我自己的一篇检讨书。我想,也许我朋友说得是对的,但是我还是有必要写一篇这样的道歉书。我不乞求大家能原谅我,只希望能把我导致这个结果的幼稚行为原原本本告诉大家,并表达我真切的歉意。我不知道能不能承受接下来的网络舆论压力,我不知道我是否应该继续在学习编程的路上走下去,我所能做的,就是尽可能祈祷这次事件对 EdXposed 造成的影响能降到最小了……

这已经算是破坏计算机系统罪了,有人报警的话,等着进局子里吧。
测试pull一定非要rm -rf /data ????????

一、我不是测试 pull,我只是打算对开发者开一个玩笑,根本没想到会被构建并推送
二、我写的不是 rm -rf /data,而是 rm -rf /data/data,两者带来的损失完全不同
三、没有任何人刷了我的 pr 构建的 build,也就是说,没有任何人的数据因此被破坏。这无论如何也算不上破坏计算机系统罪,我只是想单纯承认我的错误

@MlgmXyysd
Copy link
Member

@huanruomengyun 你的build已经构建成功并且没有人顶替,推送给了用户,也有一部分用户因为你而被清空

@MlgmXyysd
Copy link
Member

@MlgmXyysd 时间节点统计
2020年5月16日 17:33(GMT+8),NekoInverter 提交了 #537 PR(喵),被 AppVeyor CI 编译成功后在 17:36 时提交了 #538 PR(喵2)并直接 close,同时 CI 的构建进程在 PR closed 之后被 cancel,AppVeyor CI 提供的 API 更新周期为 5 分钟一次(两个 PR 间隔为 3 分钟),故 NekoInverter 所提交的软件分发并未推送给终端用户(Canary 中 installers 为空,即未推送)。

18:06,BlueJett 提交了 #539 PR(Test! DO NOT INSTALL THIS VERSION!!!!)并立即关闭,触发了 CI cancel,未推送给用户。

18:08,huanruomengyun 提交了 #540 PR(Improve smooth and phone battery life),并最终经由 AppVeyor CI 提供的 API 推送给用户(0.4.6.3 (4549)-kihnewnj)。

之后,BlueJett 又在 18:08 在明知会导致严重后果的情况下仍然提交了 #541 PR(Not bad, right?),具有主观恶意。

19:02,BlueJett 提交了修复 PR #542,然而这并不能挽救已经被受害者已经被清空的数据和 repo 所有者的损失。

20:44 singleNeuron 提交了修复 PR #544,事件到此结束。

后续:huanruomengyun 在 GitHub 发文道歉:#542 (comment)

@RimuruW
Copy link
Author

RimuruW commented May 18, 2020

@huanruomengyun 你的build已经构建成功并且没有人顶替,推送给了用户,也有一部分用户因为你而被清空

1.我的 build 不会清空数据,作为开发者你应该比我清楚
2.作为开发者,我觉得你的行为非常不负责,如果真的要走法律程序,我只能祝你好运。
在 Pull Request 界面没有任何相关提示说明 Pull Request 会被推送到 Canary,在 EdXposed Manager 界面没有任何提示指明 Canary 更新来自 Pull Request。如果说另一个人的提交时在知情的情况下的恶意行为,我现在是纯粹的莫名其妙牵扯了进来。你认为 EdXposed 的免责声明不能成为另一个人开脱的借口,那么是否你在这件事情里能凭借那个免责声明说自己完全无辜(更适合解释自己为受害者?)

@MlgmXyysd
Copy link
Member

@huanruomengyun 1,锁定data所造成的损失不比直接清空少,并且更难以发现
2,PR提交后有很明显的CI正在构建,在这时间内及时关闭会cancel掉,并且README写明了Canary为CI构建产物
3,GPL免责声明仅对开发团队生效,除此之外没有任何的声明可以洗脱你的罪名

作为始作俑者之一,你觉得你现在的行为很负责吗?

@wzzw1
Copy link

wzzw1 commented May 18, 2020

@huanruomengyun 你的build已经构建成功并且没有人顶替,推送给了用户,也有一部分用户因为你而被清空

1.我的 build 不会清空数据,作为开发者你应该比我清楚
2.作为开发者,我觉得你的行为非常不负责,如果真的要走法律程序,我只能祝你好运。
在 Pull Request 界面没有任何相关提示说明 Pull Request 会被推送到 Canary,在 EdXposed Manager 界面没有任何提示指明 Canary 更新来自 Pull Request。如果说另一个人的提交时在知情的情况下的恶意行为,我现在是纯粹的莫名其妙牵扯了进来。你认为 EdXposed 的免责声明不能成为另一个人开脱的借口,那么是否你在这件事情里能凭借那个免责声明说自己完全无辜(更适合解释自己为受害者?)

支支巨嬰因為壹時的童心提交壹個破壞用戶數據的pull. 甚至還說開發團隊沒做到CI, 終於知道為什麽全世界都覺得支支是病毒了

@Harlber
Copy link

Harlber commented May 18, 2020

@huanruomengyun 你的build已经构建成功并且没有人顶替,推送给了用户,也有一部分用户因为你而被清空

1.我的 build 不会清空数据,作为开发者你应该比我清楚
2.作为开发者,我觉得你的行为非常不负责,如果真的要走法律程序,我只能祝你好运。
在 Pull Request 界面没有任何相关提示说明 Pull Request 会被推送到 Canary,在 EdXposed Manager 界面没有任何提示指明 Canary 更新来自 Pull Request。如果说另一个人的提交时在知情的情况下的恶意行为,我现在是纯粹的莫名其妙牵扯了进来。你认为 EdXposed 的免责声明不能成为另一个人开脱的借口,那么是否你在这件事情里能凭借那个免责声明说自己完全无辜(更适合解释自己为受害者?)

支支巨嬰因為壹時的童心提交壹個破壞用戶數據的pull. 甚至還說開發團隊沒做到CI, 終於知道為什麽全世界都覺得支支是病毒了

支你麻痹,饭可以乱吃,话不能乱说

@wzzw1
Copy link

wzzw1 commented May 18, 2020

@huanruomengyun 你的build已经构建成功并且没有人顶替,推送给了用户,也有一部分用户因为你而被清空

1.我的 build 不会清空数据,作为开发者你应该比我清楚
2.作为开发者,我觉得你的行为非常不负责,如果真的要走法律程序,我只能祝你好运。
在 Pull Request 界面没有任何相关提示说明 Pull Request 会被推送到 Canary,在 EdXposed Manager 界面没有任何提示指明 Canary 更新来自 Pull Request。如果说另一个人的提交时在知情的情况下的恶意行为,我现在是纯粹的莫名其妙牵扯了进来。你认为 EdXposed 的免责声明不能成为另一个人开脱的借口,那么是否你在这件事情里能凭借那个免责声明说自己完全无辜(更适合解释自己为受害者?)

支支巨嬰因為壹時的童心提交壹個破壞用戶數據的pull. 甚至還說開發團隊沒做到CI, 終於知道為什麽全世界都覺得支支是病毒了

支你麻痹,饭可以乱吃,话不能乱说

強國人玻璃心又碎了, XD

@ElderDrivers ElderDrivers locked as off-topic and limited conversation to collaborators May 18, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.