我也想玩玩它了。 Z`'&yG;U
{+|Em (M
但是,它有一个硬件加密卡,插在电脑里面的ISA总线接口上。 T@DT|lTI
D-\z'gS
没有它,扫描1程序就不work. AW`+lE'?
}Ym~[S*x
肿么办呢?里面有啥秘密呢? &n&ndq
4m/L5
W:K
一个假期里,人家不上班的时候,我找一个相熟的女打字员偷偷借出来了,她电脑坏了也常找我修修补补。 B,ZLX/c9
ro@`S:
K]Q1VfeL=
我家里那时候没有电脑啊! +~M`rR*
8x
<; AL|`
带着它去了门口的LQ公司,自己组装了一台286兼容机。 7vK}aOs0
<ApzcyC
那个时候我连ISA总线接口规范也不懂,只是知道一点,它里面绝对没有通过DMA总线访问的存贮器。因为电脑开机后,从0-640KB RAM中没有它的地方,而从A000:0 - F000:0FFF的ROM中可以看到除了固有的BIOS外,没有别的。实模式下就这些东东。 </7?puVR
JA^Y:@
<{/
先DEBUG找找有没有小虫再说吧! n6
AP6PK7
V?Ye^-29
72小时!!!! UmA'aq
VW\~O
H
整 整 3天,我跟踪了它2天半! 店里给我准备了水和方便面,下班就把我关在里面。 a(eU
dGJ
U~{sJwB
发现它总是在扫描1时写入1个特定的端口,然后从另一端口读出点东东。 ITEd[
@^d
=uIeur
然后,不管三七二十一,把pass1全部反汇编成一个巨大的文本文件,找出了所有IN 和 OUT 指令。这个好办,咱有DOS的FIND命令,那时叫管道或过滤操作。 wqf^n-Ze
>*[Bq;
type pass1.txt | find "IN 7E" >in.txt e/ V8lo
type pass1.txt | find "OUT 7F" >out.txt =h}IyY@o
-8, lXrH
再看看它们是不是真的 in 和 out 指令,因为许多字符也会被反汇编成莫名其妙的指令。debug比较笨,不会反汇编伪指令,所以它是不会给我反汇编成类似 db "this is a string other than a series of 8086 instruction$"这样的东东的。 {@`Z`h"N
$5#+;A'Q+
其实,那个年代实际上是有专门的反汇编程序的,能根据内容反汇编出不同的段,类似于: `n~bDG>
+J%9%DqF
Identfier1 segment LXcH<)
msg01 db "this is a data segment", 0dh,0ah !4!Y~7sI"\
ends Fu#mMn0c
[ncOtDE
但是,俺不是圈内人,不知道有这好东东啊! /g]m
,Y{OI
ai(J%"D"
Nn|~:9#
不管如何,我找到了它的读写端口的真实指令和地址。 npdpKd+*K"
x-ShY&k
再跟踪它就好办了,直接运行了所有读写 7E和7F端口的地方。看看它到底读出了什么东东。 swT/
tesj
+"2IQme5
-<WQ>mrB&
0%<x>O
l+i9)Fc<i