关于某软件无法执行打印的分析历程

破解前的分析

说明:本文所说的四个配置文件是指在dzfp文件夹中的getcall.application、getcall.exe.manifest、getcall.vshost.application、getcall.vshost.exe.manifest
在这里插入图片描述

1.四处配置文件中可疑的<assemblyIdentity>标签
●具体描述:这四个配置文件中都各有两处assemblyIdentity标签,例如<assemblyIdentity name="(具体内容根据各文件而定)" version="1.0.0.1" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="x86" xmlns="urn:schemas-microsoft-com:asm.v1" />
●分析(assemblyIdentity标签):

#processorArchitecture属性:用于指定处理器。有效值msil适用于所有处理器,有效值x86适用于32位windows,有效值IA64适用于64位windows,Itanium适用于Intel64位Itanium处理器。

#type属性:只允许其值为win32。

●个人想法:如果是处理器的问题,是否可以通过修改processorArchitecture属性的有效值为msil来适配所有处理器?


2.四处配置文件中可疑的<deployment>标签

●具体描述:这四个配置文件中的前三个文件中都各有一处deployment标签,例如<deployment install="true" mapFileExtensions="true" />
●分析(deployment标签):

#install属性:指定此应用程序是否在 Windows菜单和控制面板的应用程序中定义状态。 有效值为 true 和false。 如果为 false, ClickOnce 将始终从网络中运行此应用程序的最新版本。

#mapFileExtensions属性: 如果为true,则部署中的所有文件都必须具有.deploy 扩展名。 ClickOnce 从 Web 服务器下载这些文件后,会立即将其从 Web 服务器中去除。 如果使用发布应用程序 VisualStudio ,它会自动将此扩展添加到所有文件。 此参数允许 ClickOnce 从 Web 服务器下载部署中的所有文件,这些文件阻止以 “不安全” 扩展(如 .exe)结尾的文件的传输。

●个人想法:部分文件可能需要通过拦截从Web服务器到本地的传输这一过程来获取。


3.断网后,或者删除四个配置文件后,打开 电子发票.exe 都显示服务器正在维护。
●个人想法:这不是一个离线程序,许多数据需要调用服务器中的数据库来获取。


软件的破解

1.用Exeinfo PE查壳,此程序无壳(MS Visual C# / Basic.NET ] - EP Token : 06000005),为.NET程序,可用de4dot,reflector,ildasm等软件反编译

在这里插入图片描述
2.本人选用Reflector进行反编译,将 电子发票.exe 程序集导入
在这里插入图片描述
导出其源代码,源代码文件如下
在这里插入图片描述
obj文件夹内容如下
在这里插入图片描述
●个人想法:源代码文件的obj文件中只有x86文件夹,因此初步怀疑,此软件只适用于32位操作系统(x86~32位, x64~64位),然而,已知的事实是64位操作系统也可以适用,并能正常进行打印,因此,与假设产生矛盾,暂无答案。


3.由于是.NET程序,所有可用dnSpy进行调试,当用64位的dnSpy运行时,提示该程序为32位,需要用32位的dnSpy进行调试。导入 电子发票.exe 后的界面如下:
在这里插入图片描述
4.打印功能相关文件存放于System.Drawing,实现打印功能的核心是PrintDocument类
在这里插入图片描述
PrintDocument类包括以下几个属性、事件和方法:
1、PrinterSettings 属性:存放打印机的设置信息这个属性不需要程序员设置因为它是由打印对话框获取的。
2、PrintCountroller 属性:控制打印过程。
3、DefaultPageSettings 属性:存放页面设置信息 打印纸大小方向等也不需要程序员设置因为它是由页面设置对话框获取的。
4、DocumentName 属性:指定文档名称,出现在打印机状态窗口中。
5、 BeginPrint事件:在打印之前发出。
6、PrintPage事件:每打印一页是发出,事件接受一个PrintPageEventArgs参数该参数封装了打印相关的信息。


项目终止:
因需求人找到了问题所在,并告知于我,因此,此探索历程就此结束(但本人对于此方面的学习历程却不会止步),需求人原话如下:“事情我已经搞明白了,这个软件的作用是:在发票服务器和查询发票终端之间,构建了一个网站,所有用这个软件的终端设备必须先访问网站,经过网站允许才能访问服务器。攻破这个网站,把终端设备的识别码加入网站允许系统,应该不好办。我找人直接写了一个程序,终端设备直接访问服务器”。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超周到的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值