本帖最后由 我也是个傻瓜 于 2015-6-1 10:10 编辑
在《反编译之XX营销软件》中,实现了源代码的编译,修改了注册等限制后,就完事收工了,可我没猜中故事的结局。据网友确切消息,将重生成的exe放在非调试环境下,竟然报错,如下图: 其罪魁祸首是因为UserRegister函数,一气之下,我重头新来,并分享整个“作案“过程。 01.下载安装 去官网,安装软件,悄悄地,不要被发现……。 查壳工具:exeinfoPE v0.0.3.2 ,脱壳工具:de4dot-v3-1。 03.反编译 这次没有使用.NET Reflector,而是JetBrainsdotPeek 1.4。 04.调试改错 这是最麻烦的一步,要想有结果就不能怕麻烦。下面是一些常见修改方法(VS2010下): 将安装路径下的area.db,System.Data.SQLite.dll拷到bin下,重新生成。 错误1:类型“System.Xml.Serialization.IXmlSerializable”在未被引用的程序集中定义。必须添加对程序集“System.Xml, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089”的引用。 解决1:缺少引用,添加相应引用即可。 错误2:无法将类型“int”转换为“bool” 解决2:我也不知道为什么,原代码使用(bool)进行强制转换的,在VS2010中报错,我改为这样转换:Convert.ToBoolean() 至此,程序已经可以调试运行了。 --------分---------割----------壹------------------- 但FormMain设计界面找不开,如果忽略的话,可能设计界面在设计是就看不到了。 下面都是针对设计界面的警告的常见修改方法: 警告1:设计器无法处理第 1457 行的代码:this.AutoScaleMode= AutoScaleMode.Font;方法“InitializeComponent”内的代码由设计器生成,不应手动修改。请移除任何更改,然后尝试重新打开设计器。 解决1:在前面添加完事引用,System.Windows.Forms.,类似的其他警告也是如此。 //base.FormBorderStyle = FormBorderStyle.FixedSingle; base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 警告2:变量“componentResourceManager”未声明或从未赋值。 解决2:转到定义后,是声明赋值过的,但就是“感应“不到,将其重命名resources(小写哈),如下图左,注意查找范围和查找选项的设置,完成替换后,即可打开主界面了。 警告3:变量“gb_Info”未声明或从未赋值。(FormActivePC) 解决3:又“感应“不到了,替换为任意其他名称,不要和现有变量名相冲! 警告4:变量“gb_Info9”未声明或从未赋值。(FormActiveQQ) 解决4:在警告3问题解决了,警告4又出这样的问题了,再次替换即可。 至此,程序设计界面可以看了。 --------分---------割----------贰------------------- )1(纵观解决方案中有哪些重要关注对象:Program.cs、FormMain.cs、FormLogin.cs、FormActivePC.cs、FormActiveQQ.cs、Register.cs…… )2(先去Program.cs函数中,看运行是new FormMain,无可厚非,F12转到FormMain; )3(在CS文件中,我们肯定要关注的是构造函数、Load 函数和自定义的Init()等,这里的构造函数中,主要是设计界面的初始化,我们主要看FormMain_Load函数; )4(我们应该转换进入看看……(我在里面看了一圈)……出来了,决定把FormLogin注释掉,即跳过注册、关联和登陆。劳动改造 后的Load函数函数:
06.您今天还可以 ……。 07.SelectedIndex无效 运行时,自动选号的功能报错,原因是我们跳过了前面的所有的过程,直接进入主界面,所以说,Combox未进行初始化: 于是,我手动读取值,进行了初始化。 至此,反编译破解完毕!
|