在ICCAVR中通过使用库函数来避免直接看到敏感算法源码

转载 2012年03月30日 19:09:55

在ICCAVR环境中,我们可以通过使用ilibw.exe工具来制作我们自己的函数库(需要是注册版的才行),详细的操作方法可以参见:ICCAVR所带帮助文档中TOOL REFRENCES部分Librarian一节。

每次都需要到命令行方式下输入好几个命令未免不太方便,好在新的7.22版本中已经可以直接在IDE中完成整个操作了。下面就以7.22版为例说明详细的操作过程:

1)库工程(AVRLib)

1.1)库工程的内容

库工程包括2个文件lib.c和lib.h,其中lib.c文件的内容:

int Fn(int a,int b)

{//我们不希望算法(a+b),被轻易的看到

     return a+b;

}
lib.h文件的内容:
int Fn(int a,int b);

1.2)库文件的生成

只要在编译器设置中将Project Type选为Library即可生成库文件。如果再选中

Copy output to default LIB directory

那么生成库文件之后ICCAVR IDE会自动将生成的lib文件复制到默认的LIB目录下,在笔者的机器上这个目录是

c:\iccv7avr\lib

而我们的库文件的名称则为(lib + 工程名 + .a)

libAVRLIB.a

image

image

 

2)使用库的工程(AVRLibUser)

2.1)使用库的工程的内容

使用库的工程,包含2个文件,main.c和lib.h,其中lib.h和上一步中内容是完全一样的,而main.c文件的内容为:

#include <stdio.h>
#include "lib.h"

void main(void)
{

Fn1(1,2);

}

2.2)使用上一步生成的库文件

要使用库,需要依次:

a)把库安装到本机的LIB目录中,本例中是将libAVRLIB.a 复制到 c:\iccv7avr\lib 之中

b)将库文件的头文件添加到工程中,本例中是lib.h

image

 

注意:

a)显然,使用库时的编译选项需要和生成库时的设置一致。 

b)使用时输入的库名称为:库文件名,除开lib和后缀名剩下的部分。例如库文件名为libAVRLIB.a,使用时则应该填入AVRLIB

3)总结

其实这种方法只能起到一定程度的保护作用,对于一个意志坚定的分析者来说仍然不是很困难。不过这样已经足够对付一般情况了,不是么?

JAVA设计模式(01):创建型-工厂模式【工厂方法模式】(Factory Method)

简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”,如何实现增加新产品而不影响...
  • dreamsunday
  • dreamsunday
  • 2015年06月25日 12:37
  • 4021

敏感字过滤算法

原文地址 :http://www.unitymanual.com/thread-40474-1-1.html using System;using System.Collections.Generi...
  • jinsenianhua2012
  • jinsenianhua2012
  • 2015年06月16日 09:43
  • 786

Unity Shader入门精要学习笔记 - 第11章 让画面动起来

Unity Shader入门精要学习笔记 - 第11章 让画面动起来本系列为UnityShader入门精要读书笔记总结, 原作者博客链接:http://blog.csdn.net/candycat...
  • wwlcsdn000
  • wwlcsdn000
  • 2018年01月02日 17:48
  • 767

ICCAVR实现存储空间分布

在Keil中为了节省数据存储器的空间,通过“code”关键字来定义一个数组或字符串将被存储在程序存储器中:         uchar code buffer[]={0,1,2,3,4,5}; ...
  • penglijiang
  • penglijiang
  • 2011年10月26日 11:40
  • 2462

ICCAVR编译器的介绍-----至我愚蠢的错误

ICCAVR是一种符合ANSI标准的C语言来开发MCU程序的一个工具,它具有作用合适、使用方便、技术支持强大等优点。ICCAVR就是ATMEL公司为AT90系列单片机开发我编译工具。 ICCAVR ...
  • xiayufeng520
  • xiayufeng520
  • 2012年08月22日 08:40
  • 1573

ICCAVR库制作

在ICCAVR中通过使用库函数来避免直接看到敏感算法源码 制作和使用自定义库文件的范例: 目标: 制作一个库文件libGetMax.a ,其中包含一个外部函数GetMax 。 函数Get...
  • xiayufeng520
  • xiayufeng520
  • 2015年06月02日 12:27
  • 472

使用ICC AVR和AVR STUDIO的一些差别

列出ICC AVR 过渡到 AVR STUDIO时要注意的几个问题 1.头文件更改 ICCAVR使用的是“#include ” AVR STUDIO更改为“#include ” 在ICC中使用...
  • zjt289198457
  • zjt289198457
  • 2011年11月19日 13:49
  • 4541

如何避免SQL注入漏洞

使用String来拼装SQL语句,会容易产生注入漏洞。而使用参数来传递SQL参数值,则可以避免注入漏洞,这个和用什么工具框架没有关系。在JAVA里,可以使用preparedStatement来避免的:...
  • sdbany
  • sdbany
  • 2007年12月09日 00:20
  • 1605

ICCAVR编译出现Cannot find source file X:\XXXX

首先,这是路径的问题。之前你编译的路径被更改,就会出现这种现象。 解决这种情况有一下几种方法,可以借鉴一下。 第一种:(很笨的方法,但是也很有效) 新建一个文件夹,把原来工程里的.C 文件, ....
  • xiayufeng520
  • xiayufeng520
  • 2012年08月22日 08:34
  • 1544

ICCAVR注释乱码

今天在使用以往程序的时候,发现从codeblock和记事本里复制过来的中文注释是乱码,尝试百度一下,基本答非所问。去谷歌了一下,找到了答案。 虽然很扯,但是复制的时候输入法切换成中文,就可以了,原理...
  • lijun538
  • lijun538
  • 2015年04月15日 19:52
  • 692
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ICCAVR中通过使用库函数来避免直接看到敏感算法源码
举报原因:
原因补充:

(最多只允许输入30个字)