小弟工作于基础教育行业,领导偶得一office插件(powerpoint用,免费的,台湾同行推荐),此插件若妥善推广,对改善教学用ppt质量大有裨益,但可惜是全英文的。单位员工IT水平本来就不怎么高,推广这个插件受到了很大限制,于是就萌生了汉化一下的想法,我对这方面也只是略懂皮毛,所以还想请坛子里面的高手指教一下。
插件是基于.net4.0的,vsto部署方式,在PowerPoint加载项管理里面可见,插件位置为:
c:\ACR2.0\ACR2.0.vsto
此目录结构如下:
c:\ACR2.0\
|---ACR2.0.vsto
|---Application Files
|---ACR2.0_2_0_1_2
|---ACR2.0.dll.config.deploy
|---ACR2.0.dll.deploy
|---ACR2.0.dll.manifest
|---Microsoft.Office.Tools.Common.v4.0.Utilities.dll.deploy
猜测.deploy只是给文件加上的扩展名而已,ACR2.0.dll.deploy就是实际的程序文件。
于是ildasm打开,发现还真是,dump之,得到il、res和一大堆resource文件。
打开il文件,修改里面的字符串,比如一个按钮是“OK”,修改成“确定”,完事保存。
使用ilasm重新编译此dll,顺利完成。
但当卸载掉此插件想使用ACR2.0.vsto重新安装的时候,出现了问题,提示“为文件 ACR2.0.dll计算出的哈希值与清单中的指定值不同”。
后发现ACR2.0.vsto其实就是个xml文件,里面有一节是关于ACR2.0.dll的信息的,如下,我把我认为关键的地方标红色了。
<dependency>
<dependentAssembly dependencyType="install" codebase="Application Files\ACR2.0_2_0_1_2\ACR2.0.dll.manifest"
size="10192">
<assemblyIdentity name="ACR2.0.dll" version="2.0.1.2" publicKeyToken="8a0e6b0a7d2afb2b" language="neutral" processorArchitecture="msil" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>1Q9gu5gFd5nXpiMgoxfmqrV0WrI=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
我觉得这肯定是.net的一种保护机制,通过记录要调用的dll的hash值来防止dll替换劫持。
上网搜索一些资料,在其他论坛有人指出:
更换强名称破解vsto程序的步骤:
1、反编译并修改你要破解的程序il代码,并保存成一个新文件
2、创建一个强名称签名,即snk文件
3、给新文件更换强名称
4、在.manifest文件和.vsto文件中将原来的强名称替换成新的强名称
但阐述过于简略,让我这个门外汉不知道如何下手,也不知道他说的对不对。
我不为破解(因为这个本来就是免费的),只想汉化一下,看雪论坛里的高手们,若有好的办法,还请不吝赐教。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课