这几天被F0上的freeRTOS搞崩溃了。f0的可编辑优先级只有4级,而hal封装的cmsis-os的优先级每一集freeRTOS本身的优先级倒来换去。把我搞烦躁了。决定使用Tracealyzer来追踪一下任务运行情况。(还不知道空间够不够,不够只能费大功夫使用RTX,并利用keil自带的工具简单调试了)
本教程旨在推广大家使用Tracealyzer 和SystemView类工具,前者价格要一万多。对于独立开发者这个价格不太友好,但建议公司员工还是掏钱吧。
(管理员如果觉得发在这里不合适,可以私信我。我可以删帖。)
在开始之前,还是要感谢其它几个帖子给的一些框架性的指引。但我是新手,中间的过程有很多坑。
【嵌入式系统神器 FreeRTOS+Trace 破解分析@52pojie】
【青竹雨仙@CSDN】
本帖子破解的工具是从官网趁热下载的最新版本v4.2.12. 从v4开始变化很大,不再区分不同的RTOS。如果安装好之后,你会发现安装包里面包含了所有版本相关文件:
包含RTX5,freeRTOS,Micrium,SaftRTOS,ThreadX,Vxworks等。(没有RTT)
在破解之前,需要知道几个工具:
1、de4dot : https://github.com/0xd4d/de4dot 一款反混淆和脱壳的工具
2、dnSpy : https://github.com/0xd4d/dnSpy .NET的反编译工具,可以以C#或者IL,VB等语言查看源代码。
基本步骤是:
1、下载目标软件和上面提到的两个工具(这两个工具只适合.NET的程序,其余的软件需要用别的壳检查工具确定程序和工具)
2、下载Tracealyzer的时候要注意申请一下Evaluation 版本的序列号。然后安装完软件,之后用这个序列号先online activate一下。
激活完之后的license位于C:\ProgramData\Tracealyzer Data目录下的License.xml建议拷贝之后备份。
3、先反混淆,然后再断点调试,修改,最后保存测试。后面几步可能要反复几次知道完全破解。
【不要让我把破解之后的文件传给你,请自己动手。】
第三步很繁琐。这后面就再专门讲一下。
A、反混淆
找到de4dot的文件夹,用cmd打开命令行。我们假定你的tracealyzer安装目录是D:\Program Files\Percepio\Tracealyzer 4 。
用:
<div>mkdir “D:\Program Files\Percepio\cleaned”</div><div>de4dot -r "D:\Program Files\Percepio\Tracealyzer 4" -ro "D:\Program Files\Percepio\cleaned"</div>
其中-r指定原始文件所在的文件夹,而-ro是输出文件所在的文件夹。你需要按照自己安装的目录自行更改代码。
为了防止后面有问题,你可以用python写一段代码来将文件拷贝到另一个文件夹。(见附件压缩包中的backup.py,下载放在D:\Program Files\Percepio\目录中)
<div>cd "“D:\Program Files\Percepio\"</div><div>mkdir “D:\Program Files\Percepio\original”</div><div>python3 backup.py</div>
这段python代码自动将已经cleaned的文件替代原始文件,并将原始文件备份到backup目录中。你也可以自己简单替换也可以,这样原始文件就没有了,但无可厚非。
B、调试找代码
在你的License.xml文件中有ProductId和EditionId两段序列号,后面还有代表不同平台的产品序列号。如果你是evalation的化你的序列号应该和我这里的不一样。我这里的是手动改的。时间和产品号都是自己改的。
<Product>Tracealyzer - Professional Edition</Product>
<ProductId>{07DA2EBE-0932-44C2-AC8C-F11ED48DD0AB}</ProductId>
<EditionId>{07DA2EBE-0932-44C2-AC8C-F11ED48DD0AB}</EditionId>
<LicensedTo>Personal</LicensedTo>
<ExpiresOn>2029-04-11</ExpiresOn>
<SupportThrough>2030-04-01</SupportThrough>
<Components>
<Component>
<Id>{B1CF5B88-ADA5-4B2A-81AF-257054106205}</Id>
<Name>Tracealyzer Application</Name>
</Component>
<Component>
<Id>{469D108A-B824-4C27-99ED-98B8629BFCE0}</Id>
<Name>FreeRTOS Support</Name>
</Component>
从代码分析:
"Free Edition": FA52DADE-887B-495D-8258-898B39E189CB
"Standard Edition": 050C587E-D34F-4361-B344-F8FCC4473477
"":07DA2EBE-0932-44C2-AC8C-F11ED48DD0AB
"Academic Edition": 20478608-C79A-48A9-A969-35541787D2C0
"Evaluation Edition" : F5780CA8-1FC7-4AA4-9B1E-C7F7D6E19496
那怎么分析呐?这时候就用到了dnSpy。直接打开之后,将Tracealyzer.exe拖入。
上图展示了调试的步骤。我通常先点开始(里面选择entry point模式),这时候我再搜索string/number的方式找到evalution部分的号码。
新版本改变之后,应该仍然可以通过此方法找到产品序列号。
这时候修改一下两个ID和时间。现在就开始正式调试了。
C、找到SignedLicense
4.2的逻辑更改了很多,但基本方法还是找到它。
我改了1和3以及2指向的函数,基本就可以工作了。记得compile完之后要保存之后再strart一遍。按照如上方法基本可以破解之后的版本。(如果变化不大。)基本思路是最终返回GEnum43.const_0
我曾直接进入之后return,发现有些问题。目前方法,可以使用。
应该还有不用注册就破解的方法,暂时没有找到。现在还需要evalution的码,然后修改路径。
重要的要先说一下。本人只提供方法,不提供破解文件。不要请我发文件。这样你是拉我走上被告席的节奏。
【发表在CSDN和stmcu.org.cn】
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)