“时光机器”穿越过去逆向修改老16位程序

    好吧,我承认偶有标题党的意味大笑

    切入正题。有人让我帮忙看一个程序,要求修改一下其中的电话号码。拿到手后发

现这是一个现在不常见的16位程序。应对方的要求将一些敏感信息隐去。

    简单的介绍一下破解过程吧。首先在dosbox加载运行,在ida中修改dos16PE。需

修改的电话号码是以自画汉字字库的方式显示在屏幕上,在logo和程序功能页面中

有号码。通过逆向发现两者数字使用的字库不同。破解线索发掘很简单,就是我常

说的最小系统法,也称为最大排除法。通过在.code段代码加入“dead”死亡代码,从

而快速找到各个子函数的功能,从而抓住爆破点。


下面上破解线索回溯:


在 file offset 82f0h + 6 之前,已经画过logo鸟。--> seg001:2d46 call _bioskey


刚刚输出完 "xx机械" 四个字 :seg001:0E28
刚刚输出完 "xxxx...机械厂" 13个字 : seg001:0F77(FO:6520h+7)
准备开始输出 “075723200709”中的第一个"0" :seg001:0FF7(FO:65a0h+7)


FO:82f0h->e8 25


画字符函数(ctx24)? : sub_1BAF4
画字符函数(ctx16)?  :  sub_1B8EF


seg001:2D34                 call    near ptr sub_13E93 (82e4)


seg000 file offset : 1c00
seg002 file offset : f390


_outtext:
000109a6h: 8B EC 1E B8 AE 19 8E D8 FF 76                   ; 嬱.府.庁v


ctx16.dat数字字库地址:


启动logo数字字库:
850h - 980h 分别对应 0-9


850h 930h 8f0h 930h


0 7 5 7


使用界面数字字库:
90h - 1c0h 分别对应 0-9


_putpixel 11420 + 7


由于保密原因,具体内容作了隐藏,本来想详细写下的,图文并茂的。

不过现在只有点到为止鸟。:)

你可能感兴趣的:(“时光机器”穿越过去逆向修改老16位程序)