解决应用程序数字签名问题的一个程序
2012-04-24 15:09
676 查看
搞过SmartPhone应用程序汉化的朋友可能都遇到过这样的问题:对程序的修改达到一定程度后,用SignCode会加不进签名。网上有人写了一个叫SignFix的程序,声称可以碰运气解决这个问题,但治标不治本,修改量大了还是不行。
根据我对PE文件结构分析,之所以汉化后的程序会加不进数字证书,是因为在原来的程序里已经有一个证书,如果汉化过程中修改的数据比较多,使证书数据被破坏,即:文件中证书数据的长度没有PE文件头里证书表(安全表)里所记录的长度那么长了——这也是为什么有时候,可以通过往文件后面补数据来解决——就使得SignCode程序无法替换原来的证书(具体原理不清楚,应该是由于数据不全,使得Signcode不认识这个证书了,于是拒绝替换)。
证书表和其他一些表的起始位置和长度被记录在PE文件头里。因此,解决无法签名的办法就是,找出PE头里记录的证书表的位置和长度,均修改为0,即告诉Signcode该程序还没有没有证书。这样修改后,Signcode就直接往文件里添加证书,而不是替换,签名问题就解决了。SignRemv就是根据这个原理编写的。
呵呵,对PE结构和Signcode的原理了解很少,上面的文字是就目前知识所写
点击下载
根据我对PE文件结构分析,之所以汉化后的程序会加不进数字证书,是因为在原来的程序里已经有一个证书,如果汉化过程中修改的数据比较多,使证书数据被破坏,即:文件中证书数据的长度没有PE文件头里证书表(安全表)里所记录的长度那么长了——这也是为什么有时候,可以通过往文件后面补数据来解决——就使得SignCode程序无法替换原来的证书(具体原理不清楚,应该是由于数据不全,使得Signcode不认识这个证书了,于是拒绝替换)。
证书表和其他一些表的起始位置和长度被记录在PE文件头里。因此,解决无法签名的办法就是,找出PE头里记录的证书表的位置和长度,均修改为0,即告诉Signcode该程序还没有没有证书。这样修改后,Signcode就直接往文件里添加证书,而不是替换,签名问题就解决了。SignRemv就是根据这个原理编写的。
呵呵,对PE结构和Signcode的原理了解很少,上面的文字是就目前知识所写
点击下载
相关文章推荐
- 转:解决VC2005程序的一个运行错误“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”
- 初学ASP编程易犯的一个致命程序问题及解决办
- 位运算解决“一个数组中,只有一个数字出现n次,其他数字出现k次”问题
- 问题解决:在非主Activity中无法退出应用程序,只能返回上一个Activity
- 解决Sql Server2000重新安装时”已经有一个程序挂起“的问题。
- javascript(js)浮点数字精度问题的一个解决办法。
- Android 签名打包后的APP在后台运行时按icon导致程序重启的奇葩问题解决
- 调试时出现:“没有找到 MSVCR80D.dll,因此这个程序未能启动,重新安装应用程序,可能会修复此问题”错误提示,如何解决?
- 编写一个Java应用程序。用户从键盘输入一个1—9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都
- 解决eclipse每次Run as Android 程序,会重新启动一个AVD模拟器的问题
- 【转】C++编译过程中"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"? 的彻底解决
- 未能加载文件或程序集 或它的某一个依赖项。试图加载格式不正确的程序。问题解决
- 解决"未能加载文件或程序集,或它的某一个依赖项,试图加载格式不正确的程序"问题一法
- “未能加载文件或程序集“×××”或它的某一个依赖项。试图加载格式不正确的程序”问题的解决
- [VS2008] Debug版本程序发布后 由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题 解决方法
- XP下IIS运行ASP.NET程序出现"IIS服务器应用程序不可用"问题的解决
- oracle10g "数据源管理器"找不到应用程序,可能是程序没有正确安装"问题解决
- 编写一个Java应用程序。用户从键盘输入一个1—9999之间的数,程序将判断这个数是几位数, 并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同, 例如12121、3
- Unity之一天一个技术点(五)---解决U3D程序“按下休眠键时退出程序”的问题
- 关于Web程序打开Word、Excel后,不能关闭的问题的一个解决办法