炎汉重光

炎汉重光——tasm汉化浅析之二

镜像:https://leisurebamboo.wordpress.com/2022/12/01/tasm2

 原文在2005-3-20 发表于 http://www.aogosoft.com/bbs/view.asp?id=37770 ,现有增删。
"汉化"(Sinicization)暂定义为“函数名、变量名、宏名 能用汉字”。
  出差两周,回来一看,没多少人跟贴……
  郁闷……
  或许上次的版本号太低,没人肯看?这回说個高版本的,总可以了吧?

---------------------------------------
  tasm 2.01版,长度为 10'5651字节。这一版很老了,在网上也不好找, 如果你没有这版的话,请直接看下一贴"巍巍汉邦——tasm汉化浅析之三"。

  tasm 2.01 的编译部分为:
cs:1D19 56       PUSH SI
cs:1D1A BB4607   MOV  BX,0746
cs:1D1D 8B36843D MOV  SI,[3D84]
cs:1D21 AC       LODSB
cs:1D22 D7       XLAT
cs:1D23 A802     TEST AL,02
cs:1D25 75FA     JNZ  1D21
...

  其中[3D84]为asm的buff指针;

ds:0746 起为100h个ascii码对应属性表,为
02 02 02 02, 02 02 02 02 ; ascii00~07
02 02 02 02, 02 01 02 02 ; ascii08~0F
02 02 02 02, 02 02 02 02 ; ascii10~17
02 02 02 02, 02 02 02 02 ; ascii18~1F
02 08 40 08, 80 80 80 40 ; ascii20~27
08 08 08 08, 08 08 04 08 ; ascii28~2F
0A dup(10)               ; '0'~'9'
      08 01, 08 08 08 80 ; ascii3A~3F
80,1A dup(80)            ; '@','A'~'Z'
         08, 00 08 08 80 ; ascii5B~5F
08,1A dup(A0)            ; '`','a'~'z'
         08, 08 08 08 08 ; ascii7B~7F
    128 dup(02)          ; ascii80~FF

  汉化方法仍是将ascii80~FF的对应部分换为128 dup(80)。而"ascii码对应属性表"位处该exe的第[16BC6~16CC5]字节,将後半部分(该exe的第[16C46~16CC5]字节)换成128个80即可。

  各位手上的tasm 2.01版,未必与拙文一致,找出那"ascii码对应属性表"(有128个02,很易找出),将後半部分换成128个80即可。

  下一贴分析 tasm 3.0版……
(待续)
慵懒疏狂,一无是处

评论

此博客中的热门博文

我的开源软件项目(不定期更新)

zarak_04

zarak_11