本文重点阐述了如何手动爆破 IAR EWARM 6.x以及生成License,目的一是和大家分享下,二是自己记录下过程,以便应付日后IAR更新,二是若有高手过目,请指正下不足之处。
一、IAR Embedded Workbench IDE 处理
到安装目录下找到common\bin\LicenseManager.exe文件,这个文件时IAR授权管理程序,每次启动IAR都会运行一下这个程序检测有没有授权,把它随便个改个名字(PS:直接删除也可以),这样直接运行IAR IDE 会弹出一个对话框提示运行LicenseManager失败,就从这里入手。
OD直接加载IarIdePm.exe,设断点 bp MessageBoxA ,F9跑起来,断在user32.MessageBoxA,CTRL+F9 出现提示对话框,点击确定,CTRL+F9,F8 一直运行到IarIdePm.exe 代码段,发现如下代码:
显然这里是创建了一个进程运行LicenseManager.exe程序,当LicenseManager.exe程序没有找到时,进程创建失败,弹出一个提示对话框,那么直接retun了这个函数就可以了,首先向下翻,找到函数结束返回代码:
然后再向上翻,找到函数入库代码:
选定函数入口行,空格键,直接修改为函数返回代码,即: retn
这里需要注意的是,查看函数返回代码是为了保证堆栈平衡,关于堆栈平衡原理就不详细说了。
但是在OD里面修改了是没有用的,使用UltraEdit或WinHex打开IarIdePm.exe,搜索原函数入口附件十六进制数据,然后根据修改后的数据替换,
具体步骤就不阐述了,自己搜索。
这样处理之后,再直接运行IAR,就不会有弹出提示对话框了,但是IAR实质是没有破解的,当你编译一个工程时会提示:
Fatal Error[LMS001]: No license found. Use the IAR License Manager to resolve the problem.[LicenseCheck:2.12.3.454, RMS:8.5.0.0021, Feature:ARM.EW.COMPILER,
二、iccarm.exe 处理
在安装目录下找到arm\bin\iccarm.exe程序,OD载入,搜索字符串 ,找到"Must request at least one license.",定位到代码行:
在函数入口下断,F9运行程序,到达断点,ALT+K打开调用堆栈窗体,层层堆栈分析,发现可疑代码:
先判断返回值eax是否为2,不为2的话ecx置0,然后判断eax是否为0 若eax=0则cl=1,若eax!=0则cl=0 最后在eax=cl返回
继续分析调用栈,发现只有此处返回1才OK,也就是说上一个函数返回值eax必须=0,
所以一开下断的函数入口改为:
F9运行程序,发现提示内部错误,重新载入,定位到刚才修改的位置,修改代码,下断,F9运行,断下,CTRL+F9多次,来到此处:
在此函数入口下断,重新载入程序,重复上面步骤,F9运行来到此处,F8单步运行,发现上图下断位置函数执行后会提示错误,
在此位置下断,重新载入程序,重复上面步骤,断在此处,F7跟入,分析后发现可疑代码:
经过多次分析,发现当此处AL=1时,程序运行成功,所以TEST上面的函数执行将AL置1即可,F7跟入两次以后找到将函数入口改为下面代码即可。
mov al,1
retc 0c
修改以上两处后发现iccarm.exe可以成功运行,且不在提示未授权,使用工具修改iccarm.exe保存
经过这个步骤后用iar打开工程,已经可以成功编译了。但是不能在线调试仿真。
三、仿真动态库处理
IAR EWARM共支持多种在线仿真,在安装目录下arm\bin下能找到对应的动态库,经过分析发现,只有以下几个动态库检测授权状态:
armangel.dll | Angel |
armgdbserv.dll | GDB Server |
armjet.dll | I-jet |
armjlink.dll | J-Link/J-Trace |
armjtag.dll | JTAGE |
armlmiftdi.dll | TI Stellaris |
armrdi.dll | RDI |
armrom.dll | ROM-Monitor |
armsim2.dll | Simulator |
armXDS100.dll | TI XDS100 |
以上几个动态库只需安装第二步骤处理,修改第一处位置即可,关键字符串"Must request at least one license."
经过这个步骤后,iar就可以在线仿真调试了。
三、ilinkarm.exe处理
经过仔细检查,发现arm\bin\linkarm.exe此文件也有授权检验,检验方法很简单,OD载入,搜索字符串,查找"License"。
此文件内找到以下可疑字符串:"This product is not licensed for MISRA C checking"
爆破方法和上一个步骤相同,修改一处即可,关键字符串"Must request at least one license."
四、授权文件注册
License下载地址:https://www.atool.online/softs/537080.html
文件夹 | 授权程序 |
---|---|
430 | IAR Embedded Workbench for Texas Instruments 430 5.60 |
8051 | IAR Embedded Workbench for 8051 8.30 |
ARM | IAR Embedded Workbench for ARM 6.70 |
AVR | IAR Embedded Workbench for Atmel AVR 6.30 |
STM8 | IAR Embedded Workbench for STMicroelectronics STM8 1.42 |
复制相应的文件夹到指定的目录内:
XP: C:\Documents and Settings\All Users\Application Data\IARSystems\LicenseManagement\LicensePackages\
WIN7:C:\ProgramData\IARSystems\LicenseManagement\LicensePackages\
若路径不存在,则手动创建路径。
使用License授权不需要Patch程序。