Forwarded from iVanilla 自然科学 & 神秘学实验研究部 (iVanilla)
【紧急安全通报】
有 Twitter 用户发推称,超过 7 千万的 Telegram 用户的账号休息被泄露,包括电话号码等,目前在暗网出售,总售价 8 BTC:
可能的原推文:https://twitter.com/MisterCh0c/status/983708183695937537 (已被删除)
相关推文:https://twitter.com/TheAltAnalyst/status/983717218696515584
https://twitter.com/Cyber_War_News/status/982832153149882368
Reddit 帖子:https://www.reddit.com/r/pwned/comments/8aojqs/data_breach_of_more_than_70_million_information/
https://www.reddit.com/r/pwned/comments/8asozg/complete_telegram_users_data_leakage/
虽然相关文件下载链接已经被移除,但从上面其中一个 tweet 还能找到下载链接,截止到现在下载链接仍然有效。
#安全事件 #后知后觉
有 Twitter 用户发推称,超过 7 千万的 Telegram 用户的账号休息被泄露,包括电话号码等,目前在暗网出售,总售价 8 BTC:
可能的原推文:https://twitter.com/MisterCh0c/status/983708183695937537 (已被删除)
相关推文:https://twitter.com/TheAltAnalyst/status/983717218696515584
https://twitter.com/Cyber_War_News/status/982832153149882368
Reddit 帖子:https://www.reddit.com/r/pwned/comments/8aojqs/data_breach_of_more_than_70_million_information/
https://www.reddit.com/r/pwned/comments/8asozg/complete_telegram_users_data_leakage/
虽然相关文件下载链接已经被移除,但从上面其中一个 tweet 还能找到下载链接,截止到现在下载链接仍然有效。
#安全事件 #后知后觉
Twitter
Alt Analyst
BREAKING: 70mn Telegram Accounts have been leaked and are for sale on the dark web. Usernames and Phone Numbers leaked - might be bad news for you $crypto people wanting to keep your anonymity. Stay safe. #telegram #crypto #dump #db #telegramhack #hack #infosec
duangsuse::Echo
可惜没有绘制成图表 plot 好看一些 🤔 r.size #=> 187 一共统计了 187 条消息。 r.sort_by { |it| it['published'] }.first['published'] => 2019-03-24 11:22:00 +0800 第一条消息是 2019-03-24 11:22 发送的 r.sort_by { |it| it['published'] }.last['published'] => 2019-04-05 20:06:00 +0800 最后一条消息是…
😃 那么,简而言之,我觉得有价值的信息:
2019-03-24 11:22 - 2019-04-05 20:06,一共两个星期的时间里,本频道 @dsuse
+ 有 #Telegram Hashtag 的消息,一共有 42 条,约有 20% 的消息被打上了标签
+ 含链接的消息,一共有 37 条,约有 19% 的消息被打上了标签
+ 链接和 Tag 都有的消息有 17 条,占总消息的 9%
+ 187 条消息里,折行最多的消息是这条,它有 4232 个字和 7 条链接。
当然,这 70 条都是回复本频道消息的。
IT 那点事 (YuutaW 鱼塔): 10
羽毛的小白板: 10
duangsuse Throws: 6
Rachel 碎碎念 (IFTTT): 5
Rachel 的消息发布站点 (Rachel Miracle.) via @like: 3
YSC 的频道: 2
duangsuse ¯\_(ツ)_/¯ |学渣 | 我爱学习 | ∈ [E²PROM, 范畴论]: 2
Doge: 2
YuutaW 鱼塔: 2
Rachel 碎碎念 (湘江一桥): 2
DogeSpeed广播: 1
😄 @haneko_daily 被转发的次数最多,继续努力!
😳: 4
😲: 3
😡: 2
😑: 2
🙄: 2
😋: 2
😀: 2
😥: 2
🍹: 1
😐: 1
最火的 hashtags 组合:
所有 Hashtags:
以及他们的消息覆盖个数:
== 非线性查询(当然和算法上那个没有关系啦,就是复杂一点的查询)
// 收集所有单 / 双数索引
受到解析度(只到分钟)和浮点运算准确度的影响,有很多消息都是在间隔一分钟内发完的,统计结果可能不正确。
好啦,还有什么别的信息,请大家自己来发掘呗( 😝 比如说,我熬夜发过多少消息。
def get_link(h); "https://t.me/dsuse/#{h['debug']['no'] + 9511 + 20}"; end+ 一共统计了 187 条消息。
2019-03-24 11:22 - 2019-04-05 20:06,一共两个星期的时间里,本频道 @dsuse
+ 有 #Telegram Hashtag 的消息,一共有 42 条,约有 20% 的消息被打上了标签
+ 含链接的消息,一共有 37 条,约有 19% 的消息被打上了标签
+ 链接和 Tag 都有的消息有 17 条,占总消息的 9%
map { |h| [h['body'].size, h] }.sort_by { |it| it.first }.reverse
map { |h| [h['body'].size, h] }.sort_by { |it| it.first }.reverse.first[1]['links'].size+ 187 条消息里,最长的消息是这条,它有 4475 个字 — 连链接都有 25 条! 🤪
+ 187 条消息里,折行最多的消息是这条,它有 4232 个字和 7 条链接。
sum { |it| it['body'].size } / size+ duangsuse 的平均字数:359 字 / 消息
sum { |it| it['body'].lines.size } / size+ duangsuse 的平均行数:11 行 / 消息
find_all { |it| it['header_type'] == 'REPLY' }.size
+ 过去的 187 条消息里,有 70 条都是回复,占总量 37%find_all { |it| it['header_type'] == 'FORWARDED' }.size
+ 过去的 187 条消息里,有 45 是转发自其他频道或个人的,占总量 24%当然,这 70 条都是回复本频道消息的。
a.uniq.map { |u| [u, a.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" }+ 转发者和条数表如下:
IT 那点事 (YuutaW 鱼塔): 10
羽毛的小白板: 10
duangsuse Throws: 6
Rachel 碎碎念 (IFTTT): 5
Rachel 的消息发布站点 (Rachel Miracle.) via @like: 3
YSC 的频道: 2
duangsuse ¯\_(ツ)_/¯ |学渣 | 我爱学习 | ∈ [E²PROM, 范畴论]: 2
Doge: 2
YuutaW 鱼塔: 2
Rachel 碎碎念 (湘江一桥): 2
DogeSpeed广播: 1
😄 @haneko_daily 被转发的次数最多,继续努力!
sort_by { |it| it['hashtags'].size }.reverse+ 具有最多标签的消息是这条,它有足足 8 条标签!
sort_by { |it| it['links'].size }.reverse.first
+ 具有最多链接的消息是这条,它有 25 条链接!同时也是字数最多的消息!find_all { |it| it['header_type'] == 'A_PHOTO' }.size过去 187 条消息里,一共有 29 条广播是单纯的一个照片 🖼
find_all { |it| it['header_type'] == 'A_ALBUM' }.size过去 187 条消息里,一共有 5 条广播是照片集 📸
find_all { |it| it['header_type'] == 'IS_STICKER' }.size可爱 🐱 的 duangsuse 在过去 187 条消息里使用了 28 个 sticker 抒发自己的感情,使用的表情这么多:
find_all { |it| it['header_type'] == 'IS_STICKER' }.collect { |it| it['ext'] }.yield_self { |r| r.uniq.map { |u| [u, r.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" } }😔: 7
😳: 4
😲: 3
😡: 2
😑: 2
🙄: 2
😋: 2
😀: 2
😥: 2
🍹: 1
😐: 1
find_all { |it| it['header_type'] == 'HAS_FILE' }.sizeduangsuse 在过去 187 条消息里发了 8 个文件,它们是:
find_all { |it| it['header_type'] == 'HAS_FILE' }.collect { |it| it['ext'] }["axml.rb", "AndroidManifest.xml", "AndroidManifest.xml", "TextSort.kt", "RandomPicture.kt", "Vibrator.svg", "Vibrator.png", "Vibrator.svg"]
最火的 hashtags 组合:
collect { |it| it['hashtags'] }.yield_self { |r| r.uniq.map { |u| [u, r.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" } }结果太长,在这里查看
所有 Hashtags:
hs = s.flatten.find_all { |it| it.is_a? Array }.flatten.map { |s| s.tr(" ", "") }#Android #zhihu #KDE #Low #Haha #life #tech #tencent #WeChat #weibo #share #tools #dev #Markups #Telegram #Hack #aop #Huawei #通知 #Freedom #sysadmin #GitHub #travis #CI #Sysadmin #Linux #Coolapk #Web #frontend #HTML #China #school #Microsoft #Life #VisualStudio #-} #OOP #web #geekapk #doge #CS #fix #CSharp #School #blog #recommended #bin #backend #Kotlin #Java #Share #svg #blogPOst #PL #JVM #Moha #code #ALgotithm #DuangsuseSB #GeekApk #SQL #Learn #wiki #Mozilla #ES6 #JavaScript #MoHa #Paper #haha #dotnet #bad #OOP_Delegates #Parallelism #dotNet #Csharp #Windows #performance #Channel #weekly #linux #Ruby #Project
"#" + hs.uniq.join(' #')
以及他们的消息覆盖个数:
hs.yield_self { |r| r.uniq.map { |u| [u, r.count(u)] }.sort_by { |it| it.last }.reverse.to_h.each { |e| puts "#{e.first}: #{e.last}" } }太长,这里看
== 非线性查询(当然和算法上那个没有关系啦,就是复杂一点的查询)
// 收集所有单 / 双数索引
ar = []; ar2 = []
i = 0 // 0 2 4 6
while i < self.size; ar << self[i]; i += 2; end
i = 1 // 1 3 5 7
while i < self.size; ar << self[i]; i += 2; end
aa = ar.zip(ar2)
我们将比较相邻两消息之间的关系。aa.zip(aa.map { |ms| ms.last['published'] - ms.first['published'] }).sort_by { |p| p.last }.reverse
间隔最长的两条消息是这条和这条,间隔 44880 秒(12 小时)b.map { |h| [h.last, h.first.first['body'].size ] }.map { |a| a.last / a.first }.select { |it| not it.nan? and not it.infinite? }.sort.reverse平均打字速度:7 字 / 秒 🤔
受到解析度(只到分钟)和浮点运算准确度的影响,有很多消息都是在间隔一分钟内发完的,统计结果可能不正确。
好啦,还有什么别的信息,请大家自己来发掘呗( 😝 比如说,我熬夜发过多少消息。
Telegram
duangsuse::Echo
AXMLParser parser = new AXMLParser(apkFileInputStream);
int eventType = parser.getType();
while (eventType != AXMLParser.END_DOCUMENT) {
String parserName = parser.getName();
boolean isManifest = "manifest".equals(parserName);
[...]
eventType…
int eventType = parser.getType();
while (eventType != AXMLParser.END_DOCUMENT) {
String parserName = parser.getName();
boolean isManifest = "manifest".equals(parserName);
[...]
eventType…
tg侧边栏的落雪特效: 每.5s/100 移动 P=随机点 随机(雪花,白球) .5s P+随机xy
前几天做的粒子动画实验,隔2状态随机1次 就很合适,可惜点赞不够 我懒得做 [xy,+-雪/白球 透明];而且雪花咋画呢.. 但tg客户端代码质量真不行,我估计它为这写了一个文件,但其实客户端交互动画挺多的。
#windows #api #hack https://t.me/yscschan/6968
Win32 窗口置顶zIndex问题.任务栏开始菜单 都是窗口
Win8+的Band层z序最大如果想在任务栏上显示UIAccess或注入CreateWInBand /SetWBand (shell32常规是注入?..
ysc发现有key EnableAMAccess (w32kfull.sys活动管理) 后可以使用后者自由提升窗口,key限取一次,SetShellWindow 登录时 pcshell.dll 管理,只能重启explorer.exe hook NtUserAcquirel 获取key ;好奇怪的私有API
窗口置底问题.Win8+ 桌面图标可独立窗口,只要 SendMessage 0x52C 给某窗口,它变成最底;再将 shelldll_DefView 图标下方 WorkerW 隐藏,ffplay --noborder xy=00wh=屏幕宽高 这样的播放器就是动态桌面
ShowWin(,SW_) SetParent(w,w0)
EnumWindows(f(w,argv)) FindWindow(k,fl=0) -Ex(in_w?,next?,k,fl)
SendMessageTimeout(w,k, 3x, dt, fl)
#py 计划
100粉的头图黏合Py PIL生成。为啥不是canvas或OCV或Java? Pillow Image.open/new/resize 和 getpix, Draw(im) 的API想必是熟悉了,这次我们要用100张图片 拼出小宽高的灰度图,流程是:mask.png w h *.png
若mask不存在,求得(x,y,cp) 网格排布 绘制。输出 mask 再编辑
否则,对 a=mask (x,y,resize(1,1)lum亮度) 和 b=cycle(im list) 共同 sort, imOut.paste(bim,axy) 后高亮图肯定在高亮mask点
前几天做的粒子动画实验,隔2状态随机1次 就很合适,可惜点赞不够 我懒得做 [xy,+-雪/白球 透明];而且雪花咋画呢.. 但tg客户端代码质量真不行,我估计它为这写了一个文件,但其实客户端交互动画挺多的。
#windows #api #hack https://t.me/yscschan/6968
Win32 窗口置顶zIndex问题.任务栏开始菜单 都是窗口
Win8+的Band层z序最大如果想在任务栏上显示UIAccess或注入CreateWInBand /SetWBand (shell32常规是注入?..
ysc发现有key EnableAMAccess (w32kfull.sys活动管理) 后可以使用后者自由提升窗口,key限取一次,SetShellWindow 登录时 pcshell.dll 管理,只能重启explorer.exe hook NtUserAcquirel 获取key ;好奇怪的私有API
窗口置底问题.Win8+ 桌面图标可独立窗口,只要 SendMessage 0x52C 给某窗口,它变成最底;再将 shelldll_DefView 图标下方 WorkerW 隐藏,ffplay --noborder xy=00wh=屏幕宽高 这样的播放器就是动态桌面
ShowWin(,SW_) SetParent(w,w0)
EnumWindows(f(w,argv)) FindWindow(k,fl=0) -Ex(in_w?,next?,k,fl)
SendMessageTimeout(w,k, 3x, dt, fl)
#py 计划
100粉的头图黏合Py PIL生成。为啥不是canvas或OCV或Java? Pillow Image.open/new/resize 和 getpix, Draw(im) 的API想必是熟悉了,这次我们要用100张图片 拼出小宽高的灰度图,流程是:mask.png w h *.png
若mask不存在,求得(x,y,cp) 网格排布 绘制。输出 mask 再编辑
否则,对 a=mask (x,y,resize(1,1)lum亮度) 和 b=cycle(im list) 共同 sort, imOut.paste(bim,axy) 后高亮图肯定在高亮mask点
Telegram
YSC 的频道
看到有人在问有没有 Windows 下的 Notch Simulator,于是想到了 Windows 下窗口置顶的问题。
传统的 WS_EX_TOPMOST 还是会被别的 top most 窗口挡住,而且像任务管理器,开始菜单还是能在其之上。
曾经个人调查过背后的原因,是从 Win8 开始引入了 Window Band 的功能,任务管理器或开始菜单把它们自己设置到了更高层次的 Band 上,于是能比 top most 更 top。具体可见这篇文章。
其中一种显示在上层的方法是使用 UIAccess,但是…
传统的 WS_EX_TOPMOST 还是会被别的 top most 窗口挡住,而且像任务管理器,开始菜单还是能在其之上。
曾经个人调查过背后的原因,是从 Win8 开始引入了 Window Band 的功能,任务管理器或开始菜单把它们自己设置到了更高层次的 Band 上,于是能比 top most 更 top。具体可见这篇文章。
其中一种显示在上层的方法是使用 UIAccess,但是…
#bilibili
#dom http/s 等的 origin 策略对新worker api影响挺大的
http://mmm.page 啊,拖放设计分享,年轻人就是好啊
https://github.com/krlvm/AcrylicMenus #win #hack 透明菜单
https://t.me/dsuse/17169 伪 Mac 👇2
#dom http/s 等的 origin 策略对新worker api影响挺大的
http://mmm.page 啊,拖放设计分享,年轻人就是好啊
https://github.com/krlvm/AcrylicMenus #win #hack 透明菜单
https://t.me/dsuse/17169 伪 Mac 👇2
mmm.page
mmm.page — Your Corner of the Internet
Websites don't have to be so cookie cutter. Make a website that feels uniquely you in under five minutes.
duangsuse::Echo
#linux #bing USB共享网络的SOCKS代理? #bash #tool cat>/etc/udev/rules.d/99-usb.rules <<OK ACTION=="add", SUBSYSTEM=="usb", RUN+="/bin/su duangsuse bash -c 'export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus; (sleep 2;eval `base64 -d <<<ZGNvbmYgd3JpdGUg…
更优解:为手机添加固定主机名,就没有DConf(uid=1000)连接问题 😓
#bing 在USB插入后2s,更新etc/hosts 的ipr项为默认网关的脚本
也能写个差不多,但它拿cmd autorun 去执行bash 还扯到lsusb! 总之,运维就没 #docker 那样1键化的🤪
#tool dwhelper/全局代理.sh:
#net #hack m3u8 和 HLS 格式下载器
9xbuddy源解析 - 可爬取iframe ,不过 Lj Downloader 才支持有域名混淆的Hydrax播放器(那种弹窗真是烂
hlsloader.com
cococut.net 支持 资源探测
#bug fix https://github.com/ytdl-org/youtube-dl/pull/31003/files
dconf write /system/proxy/socks/host '"ipr"'
cat>/etc/udev/rules.d/99-usb.rules <<OK
ACTION=="add", SUBSYSTEM=="usb", RUN+="/bin/sh -c '(sleep 2;eval \$(base64 -d<<<c2VkIC1FaSAicy8uKiggaXByKS9gaXAgcnxoZWFkIC1uMXxwY3JlZ3JlcCAtbzEgJ2RlZmF1bHQgdmlhIChcUyopJ2BcMS8iIC9ldGMvaG9zdHMK))& '"
OK
ipr: sed -Ei "s/.*( ipr)/ip r输出\1" /etc/hosts
爆赞必应的解读和API搜索,但貌似逼他写出这的难度,还不如自己写两小时.. 😭.conf 内嵌脚本坑太多。#bing 在USB插入后2s,更新etc/hosts 的ipr项为默认网关的脚本
也能写个差不多,但它拿cmd autorun 去执行bash 还扯到lsusb! 总之,运维就没 #docker 那样1键化的🤪
#tool dwhelper/全局代理.sh:
cat>~/proxychains.conf <<OKbtw. 原理是LD + hook dlsym。 F,C浏览器都可能有不兼容的问题
strict_chain
proxy_dns
[ProxyList]
socks5 $(getent hosts ipr|awk '{print $1}') 10808
OK
proxychains -f ~/proxychains.conf -q bash #xfce4-appfinder
#net #hack m3u8 和 HLS 格式下载器
9xbuddy源解析 - 可爬取iframe ,不过 Lj Downloader 才支持有域名混淆的Hydrax播放器(那种弹窗真是烂
hlsloader.com
cococut.net 支持 资源探测
#bug fix https://github.com/ytdl-org/youtube-dl/pull/31003/files
#site-packages/yt_dlp/extractor链接
from . import dood
T=dood.DoodStreamIE
k=T.__name__;exec(f'_ALL_CLASSES.insert(-1,T); extractors.{k}=T; T.ie_key=k[:-2].strip')
sed -E 's/(d|doo)ood.\w+/dood.la/g'
下载列表tmux-each() { a=("${@}");我真觉得 #linux 圈是一群脚本小子,ytdl还用substr 写JS解释器 parser #plt ,各种conf 遍地跑 无非是监听器和条件模式匹配,结构和显示都分不清 ,支持pwsh 这样的新势力整顿职场。。
tmux new-session -d -s Vi
tmux new-window x -t Vi
# 循环创建新窗口,并在每个窗口中执行指定命令
for (( i=0; i<$#; i++ )); do
tmux send-keys "$cmd ${a[$i]}" C-m
tmux splitw;tmux select-layout tiled
done
tmux attach-session
}
#android #hack
Xposed复用宿主app.R.drawable
利用类加载jar遍历包名
删除宿主的final标记
(btw. Dalvik 的类和资源、字节码 与jvm有差别,未必在安卓有效
有的宿主会混淆R资源,一般只是宿主加载动态模块
https://t.me/RachelBlahblah/7915
Xposed复用宿主app.R.drawable
利用类加载jar遍历包名
删除宿主的final标记
(btw. Dalvik 的类和资源、字节码 与jvm有差别,未必在安卓有效
有的宿主会混淆R资源,一般只是宿主加载动态模块
https://t.me/RachelBlahblah/7915
duangsuse::Echo
#tool 想要用 #android scrcpy+OCR 在电脑上问AI答题 #bing >用py 写截图复制文字的软件 textshot chi_sim+eng 推荐此脚本或者调百度云AI >编程: 当 PrtSc 按下且剪贴板变化,PIL获取剪贴板并用 paddle OCR 复制内容 (没有 "且") >我是要剪贴板变化时OCR ,写短点 (太长, API信息错了) >不注释。用(for).join ,把检测变化外提为 await for change(pyperclip.paste) #py…
#school #math 后来发现 OCR 不咋好 也没做 clipboard 共享(曾拿 sl4a socket 弄过) 就用web版考试了
#py 大数据(黑框 Excel)的考试, 这也太难
#hack 政治考试我赵 ChatGLM 生成600字逻辑错乱的借口🥰,又在国内找了手写模拟 #js vue , 有水印 +混淆
不如在mycanvas 下断点,找到 fillText 的配置obj, 便在new它的位置下log点
感慨到找几个字体,贴个图 在国内都能注册冲钱; #Bing 和 GPT 又卖了多少钱呢?
#linux
手机拍屏幕,还是被老师发现😡 🤦
学习通不让上传照片,js脚本小子也没人能魔改
内核更新要重启
#tool OBS一键启动虚拟摄像头。单靠 ffmpeg 推流 谷歌貌似检测不到, 只能
😊总而言之,这考试教育就煞笔 没有经济价值
抄书你🦄呢,数据害得一格一格填, 精神分裂政治文要手抄;相对西式考试·具有较强的优越感
不然怎么入脑入芯入魂 🤯?
#py 大数据(黑框 Excel)的考试, 这也太难
#hack 政治考试我赵 ChatGLM 生成600字逻辑错乱的借口🥰,又在国内找了手写模拟 #js vue , 有水印 +混淆
不如在mycanvas 下断点,找到 fillText 的配置obj, 便在new它的位置下log点
(_0x4c294d['ERXmK']='')
, 甚至不用靠 AOP 分析🙄 当然,蓝扣出遮罩 也可以消水印感慨到找几个字体,贴个图 在国内都能注册冲钱; #Bing 和 GPT 又卖了多少钱呢?
#linux
手机拍屏幕,还是被老师发现😡 🤦
学习通不让上传照片,js脚本小子也没人能魔改
navi.mediaDevice
API,干脆装驱动pacaur -Sy linux{,-headers} obs-studio v4l2loopback-dkms
内核更新要重启
#tool OBS一键启动虚拟摄像头。单靠 ffmpeg 推流 谷歌貌似检测不到, 只能
chmod 000 /dev/video0
😊总而言之,这考试教育就煞笔 没有经济价值
抄书你🦄呢,数据害得一格一格填, 精神分裂政治文要手抄;相对西式考试·具有较强的优越感
不然怎么入脑入芯入魂 🤯?
duangsuse::Echo
#android #dev 面试题。上条则是简化版的答案 🧐 仅供参考,可能我解释的太抽象了,涉及一些淘汰的远古技术, 不符合标准答案。 - Handler 基础,Looper 怎么和 Thread 绑定,怎样提高 MessageQueue 优先级 - 进程间通讯的方法,对 AIDL 的了解,对 ContentProvider 的了解 - (根据项目) 自定义 View 的方法和注意事项、事件分发、View 复用 - 写过 demo 吗,什么时候会写 demo - 对 MVVM 的了解,对 Jetpack…
#android #hack #aop 继续,加上奇怪.. 的知识
Magisk 是 Android 版的 Docker (overlayfs),能管理root、去广告加皮肤、安装字体、模拟位置、利用权限骗过 SafetyNet DRM
它让 /boot/initrd 挂载(--bind) /sbin/.magisk tmpfs 来遮住 /mirror/system vendor 树,因此需要TWRP刷zip(和root时一样) 或fastboot刷入kitchen过的原机boot.img
新设备可能不区分boot分区(A/B 切换来OTA),修改内核强制使用 initrd(boot.img) 里的 init(PID0) 程序
简单说,#Linux 启动的传统是kernel解压启动 initrd 内存盘(recovery,Magisk)去寻找真'/',然后 chroot /sysroot /init (systemd,各类run-command,.)
Zygisk 和 Xposed 都是AOP框架,分别拦截和修改 Java android.*/JNI 函数的调用,从而实现对系统和应用程序的功能修改。Zygisk 是基于 Riru 的一个模块,使用 Zygote 注入技术来加载自定义代码。Xposed 是通过替换 /system/bin/app_process 程序来控制 Zygote 进程,使其在系统启动时加载 XposedBridge.jar 文件,从而完成对 Zygote 进程和 Dalvik 虚拟机的劫持。
Zygisk 是 Riru(#cpp .so 函数替换,靠魔改某项linker_PRELOAD) 的免安装续作,开启后不能规避检测,但支持文件/JNI重定向、实现了模块黑名单。 LSP和Ed-Xposed分别支持二者(不能共存)
LSP 用 env->RegisterNatives(动态注册版Java_), jni_method_map
PRELOAD=libxposed.so 利用
RegisterNatives 本身就能让JNI函数基于jobject clazz 派发,所以比ART hook 简单
FakeXposed 作者的博文
#kt #code
Magisk 是 Android 版的 Docker (overlayfs),能管理root、去广告加皮肤、安装字体、模拟位置、利用权限骗过 SafetyNet DRM
它让 /boot/initrd 挂载(--bind) /sbin/.magisk tmpfs 来遮住 /mirror/system vendor 树,因此需要TWRP刷zip(和root时一样) 或fastboot刷入kitchen过的原机boot.img
新设备可能不区分boot分区(A/B 切换来OTA),修改内核强制使用 initrd(boot.img) 里的 init(PID0) 程序
简单说,#Linux 启动的传统是kernel解压启动 initrd 内存盘(recovery,Magisk)去寻找真'/',然后 chroot /sysroot /init (systemd,各类run-command,.)
Zygisk 和 Xposed 都是AOP框架,分别拦截和修改 Java android.*/JNI 函数的调用,从而实现对系统和应用程序的功能修改。Zygisk 是基于 Riru 的一个模块,使用 Zygote 注入技术来加载自定义代码。Xposed 是通过替换 /system/bin/app_process 程序来控制 Zygote 进程,使其在系统启动时加载 XposedBridge.jar 文件,从而完成对 Zygote 进程和 Dalvik 虚拟机的劫持。
Zygisk 是 Riru(#cpp .so 函数替换,靠魔改某项linker_PRELOAD) 的免安装续作,开启后不能规避检测,但支持文件/JNI重定向、实现了模块黑名单。 LSP和Ed-Xposed分别支持二者(不能共存)
.internal.os.Zygote
是 app_process 的起点,它负责注册JNI、创建 SystemServer(PM,WM,AMS处理的Intent),之后便执行Xp模块LSP 用 env->RegisterNatives(动态注册版Java_), jni_method_map
[T][id][sig].fnPtr
来JNI替换,Zygisk 提供了 {pre(包名),post}AppSpecialize(args
)PRELOAD=libxposed.so 利用
env->FromReflectedMethod(由java查找).{access_flags|=ACC_NATIVE, (Dalvik|ART inlined jmp)nativeFunc=callHooked}
做函数替换RegisterNatives 本身就能让JNI函数基于jobject clazz 派发,所以比ART hook 简单
FakeXposed 作者的博文
#kt #code
import de.robv.android.xposed.*
import de.robv.android.xposed.XposedHelpers.*
val reg={
val NoPrint={
setStaticObjectField("java.lang.System", "out", PrintStream(OutputStream()) )
}
findAndHookMethod("java.lang.System", cl, "<clinit>", object: XC_MethodHook() {
override fun MethodHookParam.afterHookedMethod() {NoPrint()}
})
}
//assets/xposed_init 写下类名
class My: IXposedHookLoadPackage {
fun LoadPackageParam.handleLoadPackage() {
if(packageName.equals("com.example.app"))reg()
cl=classLoader
}
}
Gist
Zygisk 源码分析 #Magisk #Zygisk
Zygisk 源码分析 #Magisk #Zygisk. GitHub Gist: instantly share code, notes, and snippets.
duangsuse::Echo
#HR #java 回答安卓面试题 [AI标准答案] - 做过哪些项目,用过哪些 Android 开发相关的东西 没有,H5赛高 - 「大学生活质量指北」是什么(?(然后我真的讲了七八分钟这个项目的来龙去脉和作用 不过VS Alt-S 同行数多光标可以列粘贴 - Java 里 LinkedList 和 ArrayList 的区别 链表适合单遍历,不需要resize (1 (2 null)) - 栈和队列的区别,如何用栈实现队列,Android 里哪些地方用到队列 Queue.add-pollFirst 队列…
#linux #hack VSCode Alt-S 同行数多光标可以列粘贴,但在 #telegram desktop 里编辑、导入导出长的富文本,就完蛋了 😅 Bot还被限制了2个链接截断
web.telegram.org 是用
不知为何Qt与Chrome,Wx的剪贴板不兼容
或许它独立于DOM自己定义了Paste,DnD这类手势?(其实是数据类型
搜了下API,找到
tdesktop.FieldHandler 渲染了 FieldTagMime 的消息, td消息格式的源码都搜不到 🤮 但确定不是 MTP (#Go protobuf 定义)
web.telegram.org 是用
$('[tabindex]:read-write').innerHTML
表示消息的,bot markdown 所支持的格式勉强能F12粘贴不知为何Qt与Chrome,Wx的剪贴板不兼容
xclip -selection c -o -t TARGETS
xclip -selection clipboard -o -t text/html
剪贴板接口也不是旧版 application/rtf text/uri-list
,很明显与Qt没有关系😅 或许它独立于DOM自己定义了Paste,DnD这类手势?(其实是数据类型
搜了下API,找到
setMimeData Linksparser application/x-td-forward
这些符号,但其实还是一个按区间的格式 x-field-{text,tags} 😅 tdesktop.FieldHandler 渲染了 FieldTagMime 的消息, td消息格式的源码都搜不到 🤮 但确定不是 MTP (#Go protobuf 定义)
hexdump -e'1/4 "%X" "\n"'
可以看到是基于int区间的GitHub
tdesktop/Telegram/SourceFiles/history/view/history_view_list_widget.cpp at 5179d9a03fbf1b6fcc347c6496517a72e0565c04 · telegram…
Telegram Desktop messaging app. Contribute to telegramdesktop/tdesktop development by creating an account on GitHub.