<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>归档 on Timmoc 的技术小屋</title>
    <link>https://t1mmoc.github.io/tags/%E5%BD%92%E6%A1%A3/</link>
    <description>Recent content in 归档 on Timmoc 的技术小屋</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sat, 17 Oct 2026 18:40:00 +0800</lastBuildDate>
    <atom:link href="https://t1mmoc.github.io/tags/%E5%BD%92%E6%A1%A3/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>【AIGC】没有易语言 IDE 也能读 .e 工程：把自己 2014–2018 的聊天器从二进制里挖出来</title>
      <link>https://t1mmoc.github.io/posts/2026-10-17-epl-e-container-reading/</link>
      <pubDate>Sat, 17 Oct 2026 12:47:00 +0800</pubDate>
      <guid>https://t1mmoc.github.io/posts/2026-10-17-epl-e-container-reading/</guid>
      <description>给社团讲的逆向入门课之外的另一篇：清理一批学生时代的旧归档时发现一个现实问题——26 个 .e 工程全是专有二进制容器，而我不想为了读旧代码重装易语言。这篇讲怎么把 .e 当成「明文 GBK 串 &#43; 长度前缀 &#43; 二进制记录」交错的容器来扫：为什么 strings 一定漏掉最有价值的那部分、为什么必须按 GBK 双字节规则逐字节走、长度前缀为什么不能拟合出一条统一规则、扫出来的东西一大半是假阳性该怎么分三类筛。然后给出了这套方法的量化边界：26 个工程约 27 万条扫描串里，能确认是亲手写的源码语句只有 2 行。最后用它还原了 LP 聊天器四个年头的演进——命令名怎么变的、为什么身份字段叫「马甲」、文号取件式文件传输、以及 878 KB 的客户端里真正属于我的代码其实只占前面一小段。</description>
    </item>
    <item>
      <title>【AIGC】ARP 欺骗小工具：从 1.1 MB 的易语言容器里读出它到底做了什么</title>
      <link>https://t1mmoc.github.io/posts/2026-10-17-epl-arp-spoof/</link>
      <pubDate>Sat, 17 Oct 2026 12:41:00 +0800</pubDate>
      <guid>https://t1mmoc.github.io/posts/2026-10-17-epl-arp-spoof/</guid>
      <description>2019 年写的 ARP 欺骗工具，一个 1.1 MB 的 .e 文件，没有 IDE 打不开。这篇讲怎么只用字节扫描把它读清楚：窗体记录告诉你全部输入字段（选网卡、路由器MAC、被欺骗MAC、发送间隔、扫描、发送），一句 WinPcap 3.1 的提示暴露了它发二层帧的方式，IPHLPAPI.DLL 的 SendARP 声明暴露了它怎么探测，ARP头/以太网头 两个结构体名暴露了它拼包的方式。同时也是一次归因翻车记录——容器里捞到 15 条形如源码的语句，我一开始把硬编码的 192.168.43.149 当成自己的调试残留，实际上那条极可能来自模块自带的例程。</description>
    </item>
    <item>
      <title>【AIGC】LP 远程控制：两个 7 KB 的易语言工程，读出一套完整协议（还有一行我自己的源码）</title>
      <link>https://t1mmoc.github.io/posts/2026-10-17-epl-remote-control/</link>
      <pubDate>Sat, 17 Oct 2026 12:35:00 +0800</pubDate>
      <guid>https://t1mmoc.github.io/posts/2026-10-17-epl-remote-control/</guid>
      <description>2016-10 的 LP 远程控制，服务器.e 7,434 字节 &#43; 客户端.e 6,749 字节，两个都不含第三方模块，所以能把全部串枚举出来——服务器 73 条、客户端 55 条。这一篇把两个窗口的串并排列出来，就能把整套协议反推干净：谁监听谁连接、报文里有哪些字段、屏幕是怎么传回去的（被控端 _时钟1_周期事件 里那句『定时拍照』）、鼠标类型 1 和 3 分别是什么。也讲了为什么这套东西的名字起反了，以及全 26 个工程里只存活两行的『真源码文本』，其中一行就在这里。</description>
    </item>
    <item>
      <title>【AIGC】两个 8 KB 的整人小程序：32 条串里读不出热键绑了哪个键，换个反编译器就全读出来了</title>
      <link>https://t1mmoc.github.io/posts/2026-10-17-epl-hotkey-toys/</link>
      <pubDate>Sat, 17 Oct 2026 12:29:00 +0800</pubDate>
      <guid>https://t1mmoc.github.io/posts/2026-10-17-epl-hotkey-toys/</guid>
      <description>lp-toys 收了两个小程序：鼠标跟随.e（7,211 字节，66 条串）和 用热键来整人.e（7,998 字节，32 条串）。这一篇先按字节扫描把两份清单原样贴出来，再讲清楚这套方法的边界到底在哪——我复核过：容器里明文存的只有我自己起的名字（Locked、ShutDown、标签1）和我手打的字符串常量（shutdown /s /t 60），而平台命令名（注册热键 / 运行 / 信息框 / 写注册项）和键位常量（#Alt键状态、#L键、#NumLock键）一个字节都不在，出现 0 次。所以「读不出热键绑在哪个组合键」不是玄学，是这么个具体的缺失。后来我用 e-packager 把同一个容器解成了文本，12 个热键、一条四步解锁序列、以及它到底有没有把自己复制到 C:\1.exe，一次全说清了。</description>
    </item>
    <item>
      <title>【AIGC】五个版本的音乐播放器，和一个连作者名都还没想好的工程</title>
      <link>https://t1mmoc.github.io/posts/2026-10-17-epl-music-player/</link>
      <pubDate>Sat, 17 Oct 2026 12:23:00 +0800</pubDate>
      <guid>https://t1mmoc.github.io/posts/2026-10-17-epl-music-player/</guid>
      <description>lp-music-player 收了 2014-10 到 2016-04 的五个工程，是这批归档里迭代最勤的一个。这篇有两个方法点：一是「看串的偏移分布，比看串本身更有信息量」——音乐播放器内测.e 扫出 1066 条串，其中 7518 到 30000 这一整段全是嵌入位图的像素和调色板，真正有用的东西只挤在两个不到 800 字节的窗口里；二是这套筛选怎么做到的。内容上有几个我自己忘了的东西：lrc 歌词制作器比播放器早一年半、对照.e 里那个带广告语的「惜缘音乐盒子」、LOL 专用版只有 3 条串但重写了窗口关闭事件，以及一个备注里写着「作者：神马？？？」的工程。</description>
    </item>
    <item>
      <title>【AIGC】酷 Q 之前，我自己写了个 QQ 群机器人：签到、钓鱼、一套虚拟货币</title>
      <link>https://t1mmoc.github.io/posts/2026-10-17-epl-qq-bot/</link>
      <pubDate>Sat, 17 Oct 2026 12:18:00 +0800</pubDate>
      <guid>https://t1mmoc.github.io/posts/2026-10-17-epl-qq-bot/</guid>
      <description>2016-06 的 机器人.e，10,763 字节、扫描只产出 82 条串。这一篇想讲的不是机器人本身，而是「怎么用 82 条串把一个小工程的骨架读完」：把控件名、事件名、常量名、帮助文案分四栏摆出来，逻辑就自己显形了。里面能读到「报到 / 您已经报到过了」的签到、一个需要输入『收杆』结束的钓鱼玩法、钱数/钱总/钱分/鱼儿分 这套积分账本、句柄QQ记录分 这种按 QQ 号建索引的记录，以及我自己造的读取在哪/想读取的/要判断的 三件套配置读取。还有一件必须说清的事：全文扫不到任何 QQ 协议、机器人 API 或网络组件，所以它靠什么拿到群消息，我没法确定。</description>
    </item>
    <item>
      <title>【AIGC】两个 2 KB 的「端口映射」工程：一个空壳，以及它教会我的两件事</title>
      <link>https://t1mmoc.github.io/posts/2026-10-17-epl-port-mapper/</link>
      <pubDate>Sat, 17 Oct 2026 12:13:00 +0800</pubDate>
      <guid>https://t1mmoc.github.io/posts/2026-10-17-epl-port-mapper/</guid>
      <description>端口映射测试/ 里是两个 1.7 KB 和 2.1 KB 的 .e，是研究易语言容器格式最好的标本——小到一个窗口就装得下全部结论（长度前缀、窗体记录形状、支持库表项的结构就是这么定下来的）。但扫完之后我必须推翻自己写在仓库 README 里的话：我原本说它是「一个最小可用的 TCP 中继」，实际上两个工程里 `数据到达` 出现 0 次、`连接`/`发送`/`监听` 也全是 0，唯一的事件处理函数只有 __启动窗口_创建完毕。它是一个停在「控件摆好了、事件挂上了」阶段的空壳。这一篇讲怎么拿最小的样本定格式，以及怎么用零命中来证伪自己编的故事。</description>
    </item>
    <item>
      <title>【AIGC】1.75 MB 的阳光修改器里，我写的代码不到 1500 字节：一次容器考古，外加我读错又改回来的一次</title>
      <link>https://t1mmoc.github.io/posts/2026-10-17-epl-pvz-sun-trainer/</link>
      <pubDate>Sat, 17 Oct 2026 12:05:00 +0800</pubDate>
      <guid>https://t1mmoc.github.io/posts/2026-10-17-epl-pvz-sun-trainer/</guid>
      <description>植物大战僵尸阳光修改器.e，1,755,148 字节、75,198 条扫描串，而属于我自己的窗体定义只占文件最前面 1,520 字节（一个标题、七个控件、一个默认值 100000）。剩下的是一整套第三方内存/驱动模块：内存_多条件搜索类（作者署名 sttacckz）、驱动级保护进程、驱动级模拟按键，加上 Cheat Engine 那套「不变/变大/变小/改变」的数值变化搜索，和 读内存整数型/写内存整数型/读内存代码 全套带类型的读写命令。这一篇还有两个硬结论：我在容器里找到了两个真的内嵌 PE（i386、PE32、56 KB，带一个非标准段 mysechx，前面紧挨着「输入法文件(SouGou)搜狗拼音」的说明），以及我第一次读的时候把它误判成「只是参数文档、里面没有二进制」，这次靠按结构扫 MZ 头改了回来。</description>
    </item>
  </channel>
</rss>
