自然语言计算器(opalcalc_1.81)一字节和谐教程
本帖最后由 gagmeng 于 2016-2-26 21:35 编辑软件介绍:
[*]OpalCalc is a brand new type of calculator for the PC. As easy to use as Notepad or a word processor, OpalCalc allows you to insert natural language as part of the sum, along with multi-line support so you can go back and adjust your previous calculations. Want a tiny footprint on the screen for a single sum? Resize accordingly. Want it to fill the screen for heavy-duty work? OpalCalc can adapt.
[*]Featuring a lightweight footprint, on-the-fly calculation as you type, percentages, variable support, hundreds of units and functions, extensive notation support, intuitive design/documentation and much more. Once you've tried it, you'll never want to go back to your ordinary desktop (or PC) calculator again!
用户评价:
[*]PCWorld "Step Away From the Spreadsheet and Dig Donationware Gem OpalCalc"
[*]MakeUseOf.com: "OpalCalc: Cool Text-based Calculation App To Replace Your Windows Calc"
[*]LifeHacker: "Perform Long Calculations in Plain English with These Awesome Calculator Apps"
[*]Softoxi.com:"OpalCalc is a very convenient, reliable and effective calculator"
[*]FindMySoft.com "OpalCalc ? A Very Useful Calculator"
软件特性:
[*]Lightweight footprint (only 600k)
[*]Multiline support (notepad style)
[*]Configurable GUI with colour schemes
[*]Built-in 'Quickstart' tutorial
[*]Full colour coding
[*]Multiple undo/redo, zoom in/out, etc.
[*]Numerous built-in variables and functions (create your own too!)
[*]Percentage support
[*]Hundreds of measures, like kilograms and feet (create your own too)
[*]Extensive date and time support
[*]Currency support with conversion (data courtesy of themoneyconverter.com)
[*]Portable (260k from a pen drive!)
[*]Load/save/print support
[*]Programmer syntax and functions
[*]Custom number base support
[*]Advanced notation support
[*]Comma decimal point support for Europe, Russia, and South America etc.
软件界面:
和谐教程:
1、从官网说明可以了解到限制“The demo/'lite' version is fully functional, except for a 5 line limit for calculations. To overcome this limitation and help support the development of OpalCalc, upgrade using credit/debit card, or through Paypal (user license lasts forever, including updates, and there's no faffing about with keys or passwords).”
2、使用NET把编译工具(net reflector、ILSPY、justdecompile或者dnspy)加载OpalCalc.exe;
3、搜索字符串“5 lines”可定位到如下函数
public void createAnswers(string text)
{
...
if (!this.determineWhetherToDisplayAnswer(this.demo, array, i, text))
{
this.answerWhole = "Demo allows only 5 lines";
if (!this.demomsg)
{
this.demomsg = true;
MessageBox.Show(Program.frm, "This demo/lite version of OpalCalc only allows 5 lines (excluding included tutorial and examples such as 'shopping' or 'workday'). You can still do a lot with that, but for unlimited lines, please upgrade via the website at: www.skytopia.com/software/opalcalc\n\n.....or select the red/square dropdown menu button and click 'Upgrade OpalCalc'. Paid users will often also receive a more up-to-date version of OpalCalc than demo users.");
}
}
...
}
从上面函数中可知道只要if (!this.determineWhetherToDisplayAnswer(this.demo, array, i, text))中为false即破解了限制,进入关键函数determineWhetherToDisplayAnswer;
private bool determineWhetherToDisplayAnswer(bool demo, string[] lines, int n, string text)
{
return !demo || this.countNonSpaceLines(lines, n) < 5 || (text.Contains("OpalCalc QuickStart:") && text.Contains("Thank you for reading and enjoy OpalCalc! You may press F1 now, or reboot OpalCalc") && text.Contains("More complicated mathematical expressions are supported")) || (lines.Length >= 5 && (jtext.complexsums.Contains(lines) || jtext.shopping.Contains(lines) || jtext.workday.Contains(lines) || jtext.shoppingandroom.Contains(lines) || jtext.datesandtimes.Contains(lines)));
}
4、根据determineWhetherToDisplayAnswer函数可看出,只要demo输入为false即OK,因此可确定if (!this.determineWhetherToDisplayAnswer(this.demo, array, i, text))中this.demo必须为false;
5、分析对this.demo的引用,定位到
private void Form1_Load(object sender, EventArgs e)
{
...
Program.debugStartup("calc complete", calc.debugToDisk);
this.cc.demo = true;
this.rtbi.SetRTBO(this.rtbo, this.cc);
...
}
只需修改为如下即可破解
private void Form1_Load(object sender, EventArgs e)
{
...
Program.debugStartup("calc complete", calc.debugToDisk);
this.cc.demo = false;
this.rtbi.SetRTBO(this.rtbo, this.cc);
...
}
5、使用IDA或者dnspy查看this.cc.demo = false;这句语句的地址
/* 0x00012A92 17 */ IL_0056: ldc.i4.1
/* 0x00012A93 7D45000004 */ IL_0057: stfld bool OpalCalc.calc::demo
6、使用winhex将地址0x00012A92修改为16即可
破解后效果展示:
和谐文件下载:(老话长谈,此文件仅供个人学习和交流,其它用途请购买正版。)
大家多给加点威望和PYB哦,你们的支持是我永远的动力!
**** Hidden Message *****
支持一下了,感谢分享了 软件不错,试试看看 软件的介绍全是英文,我这菜鸟看不懂啊,不过还是感谢楼主的分享 支持了,顺便收了这个软件的代码, 支持一下了,感谢分享了 分析过程有用,感谢大牛分享 谢谢楼主分享 谢谢表哥带来的net精彩破解。收藏了 谢谢老子分享