我也想玩玩它了。 ,
>WH)+a
F`4W5~`
但是,它有一个硬件加密卡,插在电脑里面的ISA总线接口上。 \HB
fM&
|-ZML~2S=h
没有它,扫描1程序就不work. :Fhk$?/r
Il&FC
肿么办呢?里面有啥秘密呢? Zd-qBOB2L
bf/6AY7
一个假期里,人家不上班的时候,我找一个相熟的女打字员偷偷借出来了,她电脑坏了也常找我修修补补。 +Kgl/Wg%
hr]+4!/
Y%/RGYKh
我家里那时候没有电脑啊! lZAGoR;0Ra
Un8' P8C
带着它去了门口的LQ公司,自己组装了一台286兼容机。 5=V"tQ&d9U
r]Hrz'C`
那个时候我连ISA总线接口规范也不懂,只是知道一点,它里面绝对没有通过DMA总线访问的存贮器。因为电脑开机后,从0-640KB RAM中没有它的地方,而从A000:0 - F000:0FFF的ROM中可以看到除了固有的BIOS外,没有别的。实模式下就这些东东。 %ap]\o$^4
Tbm
~@k(C
先DEBUG找找有没有小虫再说吧! 6],?Y+_;)L
[CEV&B
72小时!!!! "&H'?N%9Up
.QP`Qn6 (P
整 整 3天,我跟踪了它2天半! 店里给我准备了水和方便面,下班就把我关在里面。 qoZi1,i'
-G>J
发现它总是在扫描1时写入1个特定的端口,然后从另一端口读出点东东。 h
8$.m
Qr
bqH
[-mu6
然后,不管三七二十一,把pass1全部反汇编成一个巨大的文本文件,找出了所有IN 和 OUT 指令。这个好办,咱有DOS的FIND命令,那时叫管道或过滤操作。 yhgGvyD
B!mHO*g
type pass1.txt | find "IN 7E" >in.txt P
DY :?/
type pass1.txt | find "OUT 7F" >out.txt
j)/Vtf
uNI&U7_"
再看看它们是不是真的 in 和 out 指令,因为许多字符也会被反汇编成莫名其妙的指令。debug比较笨,不会反汇编伪指令,所以它是不会给我反汇编成类似 db "this is a string other than a series of 8086 instruction$"这样的东东的。 rd&d~R6
|]<#![!h#
其实,那个年代实际上是有专门的反汇编程序的,能根据内容反汇编出不同的段,类似于: ;>2-
s=)W
Identfier1 segment K\ Wzh;
msg01 db "this is a data segment", 0dh,0ah o<A-ETx<
ends 5
Y&`Z J
x"Ll/E)\v]
但是,俺不是圈内人,不知道有这好东东啊! 29grb P
#r9\.NA!
9X*Z\-
不管如何,我找到了它的读写端口的真实指令和地址。 Hx6ODj[-
Aq(cgTNW
再跟踪它就好办了,直接运行了所有读写 7E和7F端口的地方。看看它到底读出了什么东东。 xp1/@Pw?
r??_2>Q
GDCp@%xW
O^\:J2I(
D`QMlRzXy