炎汉重光
炎汉重光——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版……
(待续)
慵懒疏狂,一无是处
评论
发表评论