- class-dump 安装 和使用
奋斗的小马达
安装我的硬件环境环境:macOSHighSierra10.13.4Xcode9.3.1class-dump下载地址:https://link.jianshu.com/?t=http://stevenygard.com/projects/class-dump/1,终端输入mkdir~/bin,在当前用户根目录下创建一个bin目录。2,把下载下来的dmg打开,复制文件里面的class-dump到创建的
- class-dump的安装和使用
瞬csr
用来dump目标文件的class信息的工具。它利用Objective-C语言的runtime的特性,将存储在mach-O文件中的@interface和@protocol信息提取出来,并生成对应的.h文件。安装步骤1、下载地址:http://stevenygard.com/projects/class-dump/2、打开终端输入open/usr/local/bin3、把dmg文件中的class-du
- ios逆向工具Class-dump的安装和导出.h文件的教程
小手琴师
ios逆向ios逆向classdumpclass-dump
目录官网文件安装方法运行报错CannotfindoffsetforaddressxxxinstringAtAddress:解决运行报错的版本下载地址:获取app文件class-dump命令用法把信息输出到文件目录官网地址class-dump-3.5.dmg的下载地址官网文件安装方法双击安装dmg文件以后把里面的class-dump文件,复制到/usr/local/bin/目录下,这样才能在终端的命
- 应用砸壳
coder_feng
砸壳软件脱壳,顾明思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)砸壳原理应用加壳(加密)提交给Appstore发布的App,都经过官方保护而加密,这样就可以保证机器上跑的应用都是经过苹果审核的,也可以管理软件授权的。经过AppStore加密的应用,我们无法通过Hopper等反编译静态分析,也无法Class-Dump,在逆向分析过程中需要对加密的二进制文件进行解密才可以进行静态分析,这一
- 逆向工程之class-dump的使用
MMD_
class-dump-H解压完成的APP的文件路径/mexue2.app-o/Users/morris/Desktop/指定生成文件路径
- Objective-C Class-dump 安装和使用方法
一枚64byte的仙女
class-dumpisacommand-lineutilityforexaminingtheObjective-CsegmentofMach-Ofiles.Itgeneratesdeclarationsfortheclasses,categoriesandprotocols.Thisisthesameinformationprovidedbyusing‘otool-ov’,butpresente
- 逆向APP的思路
龙之天下
1、界面分析Cycript、Reveal2、代码分析对Mach-O文件的静态分析MachOView、class-dump、HopperDisassembler、ida等3、动态调试对运行中的APP进行代码调试debugserver、LLDB4、代码编写注入代码到APP中必要时还可能需要重新签名、打包ipa
- ios-class-guard - iOS代码混淆与加固实践
erterhgj
App加固混淆加固cocoamacosobjective-c
转载:ios-class-guard-iOS代码混淆与加固实践目录ios-class-guard-iOS代码混淆与加固实践摘要引言一、class-dump二、ios-class-guard混淆原理三、ios-class-guard混淆结果四、ios-class-guar的使用ios-class-guard不支持Swiftios-class-guard不支持iPhoneOSSDKios-class-
- iOS 代码混淆
程序员学哥
讲代码混淆我们先来理解加固:加固什么是加固加固是为了增加应用的安全性,防止应用被破解、盗版、二次打包、注入、反编译等常见的加固方式有数据加密(字符串、网络数据、敏感数据等)应用加壳(二进制加密)代码混淆(类名、方法名、代码逻辑等)......(不同平台还有不同的做法)代码混淆为什么要进行代码混淆因为iOS程序可以通过class-dump、Hopper、IDA等获取类名、方法名、以及分析程序的执行逻
- class-dump Error:Cannot find offset for address 0xd80000000101534a in stringAtAddress:
Simple_Code
我的class-dump是官网下载的,在使用class-dump-H报错Error:Cannotfindoffsetforaddress0xd80000000101534ainstringAtAddress:由于我项目使用了Swift和Oc混编,猜测可能是官网的class-dump不支持dumpswiftfiles导致。解决办法:从链接https://github.com/AloneMonkey/
- iOS逆向工程-dumpdecrypted砸壳
马拉萨的春天
一天一读基础知识点ios越狱砸壳
砸壳从AppStore上下载的ipa里面的二进制文件是经过加密的,class-dump和HopperDisassembler都需要用到未加密的二进制文件,所以需要我们通过砸壳得到。我们可以通过命令查看二进制文件是否加密otool-l二进制文件路径|grep-B2crypt砸壳前.png其中cmd尾部为_64的是arm64架构,另一个为armv7架构,cryptid=1表示有加密,cryptid=0
- class dump使用方式和原理
憧憬blog
Windows证书iOS证书cocoamacosobjective-c
一、安装官网下载安装包完成后,将class-dump复制到usr/bin文件夹下如果这个时候没有发现usr文件夹说明其隐藏起来了去查询mac系统下怎么显示隐藏文件发现macos10.11不让复制没有这个权限解决办法如下:重启电脑,按住command+R,出现OSXUtilities界面后,在Utilities菜单中选择Terminal,运行“csrutildisable;reboot”,电脑自动重
- iOS Class Guard github用法、工作原理和安装详解及使用经验总结
憧憬blog
Windows证书WindowsiOSiOS证书cocoamacosobjective-c
iOSClassGuard是一个用于OC类、协议、属性和方法名混淆的命令行工具。它是class-dump的扩展。这个工具会生成一个symboltable,这个table在编译期间会包含进工程中。iOS-Class-Guard能有效的隐藏绝大多数的类、协议、方法、属性和实例变量名。iOS-Class-Guard不是应用安全的最终解决方案,但是它绝对能让攻击者更难读懂你的程序。iOS-Class-Gu
- class-dump 混淆加固、保护与优化原理
iOS学霸
unit加固App加固混淆加固cocoamacosobjective-c
class-dump混淆加固、保护与优化原理进行逆向时,经常需要dump可执行文件的头文件,用以确定类信息和方法信息,为hook相关方法提供更加详细的数据.class-dump的主要用于检查存储在MachO文件的Objective-C中的运行时信息,为类,类别和协议生成声明信息,与tool-ov命令产生的信息相同,不同的是class-dump会将这些信息Objective-C声明形式提供,更加紧凑
- iOS Class Guard github用法、工作原理和安装详解及使用经验总结
不写代码没饭吃
iOS加固APP加固cocoamacosobjective-c
iOSClassGuard是一个用于OC类、协议、属性和方法名混淆的命令行工具。它是class-dump的扩展。这个工具会生成一个symboltable,这个table在编译期间会包含进工程中。iOS-Class-Guard能有效的隐藏绝大多数的类、协议、方法、属性和实例变量名。iOS-Class-Guard不是应用安全的最终解决方案,但是它绝对能让攻击者更难读懂你的程序。iOS-Class-Gu
- iOS Class Guard github用法、工作原理和安装详解及使用经验总结
iOS学霸
unit加固App加固混淆加固cocoamacosobjective-c
iOSClassGuard是一个用于OC类、协议、属性和方法名混淆的命令行工具。它是class-dump的扩展。这个工具会生成一个symboltable,这个table在编译期间会包含进工程中。iOS-Class-Guard能有效的隐藏绝大多数的类、协议、方法、属性和实例变量名。iOS-Class-Guard不是应用安全的最终解决方案,但是它绝对能让攻击者更难读懂你的程序。iOS-Class-Gu
- iOS Class Guard github用法、工作原理和安装详解及使用经验总结
iOS学霸
unit加固App加固混淆加固cocoamacosobjective-c
iOSClassGuard是一个用于OC类、协议、属性和方法名混淆的命令行工具。它是class-dump的扩展。这个工具会生成一个symboltable,这个table在编译期间会包含进工程中。iOS-Class-Guard能有效的隐藏绝大多数的类、协议、方法、属性和实例变量名。iOS-Class-Guard不是应用安全的最终解决方案,但是它绝对能让攻击者更难读懂你的程序。iOS-Class-Gu
- class-dump 混淆加固、保护与优化原理
不写代码没饭吃
iOS加固APP加固cocoamacosobjective-c
进行逆向时,经常需要dump可执行文件的头文件,用以确定类信息和方法信息,为hook相关方法提供更加详细的数据.class-dump的主要用于检查存储在MachO文件的Objective-C中的运行时信息,为类,类别和协议生成声明信息,与tool-ov命令产生的信息相同,不同的是class-dump会将这些信息Objective-C声明形式提供,更加紧凑易读.安装class-dump是一个命令行工
- iOS-2023面试最新-逆向题-视觉
super_man_风清扬
ios
1、逆向思路界面分析。Cycript、Reveal代码分析。MachOView、class-dump、HopperDisassembler、ida动态调试。debugserver、LLDB代码编写。代码注入,重签名,打包2、ios签名机制3、Mach-O,ASLR4、LLVM5、OpenSSH登录iPhone,[sh脚本文件]6、代码混淆7、越狱8、脱壳9、Cycript调试,Reveal调试10
- iOS逆向之代码注入
崔希羽
准备工作已去壳ipa,重签运行,可参照iOS逆向之砸壳与重签下载yololib,往MachO文件的Load_Commonds中注入一个LC_LOAD_DYLIB下载class-dump,并编译,将编译好的二进制文件放到电脑/usr/bin,若没有权限,放置其他目录请配置~/.base_profile环境,如放置目录/Users/somebody/mybin中,那么profile中添加exportP
- iOS逆向工程 class-dump的安装和使用
cafei
class-dump是逆向工程的工具,可以还原出.h文件安装:class-dump的下载地址:http://stevenygard.com/projects/class-dump/将class-dump-3.5.dmg下载下来后,将dmg文件中的class-dump复制到“/usr/local/bin”下,如图所示Tip:Mac下的“/usr/local/bin”目录是隐藏的,可以打开Finder
- class-dump 和 iOSOpenDev 的使用
aoe41606
移动开发运维嵌入式
class-dump官网地址:这里我这里下载的是class-dump-3.5.dmg版本号的。双击.dmg文件,将拉倒/usr/local/bin文件夹下,这样就能够在终端使用class-dump命令了。这里我演示dump系统自带的计算器,导出它的头文件。命令例如以下:class-dump-H/Applications/Calculator.app-o/Users/Rio/Desktop/calc
- Error: Cannot find offset for address 0x30000000010b7151 in stringAtAddress:
Cwwng
一、官网class-dump-H报错:Error:Cannotfindoffsetforaddress0xd80000000101534ainstringAtAddress:由于项目使用了Swift和Oc混编。二、解决:在这里下载:https://github.com/AloneMonkey/MonkeyDev/blob/master/bin/class-dump感谢大神!!!给class-dum
- Objective-C代码混淆
东了个尼
【本文转载自】(https://blog.csdn.net/yiyaaixuexi/article/details/29201699)class-dump可以很方便的导出程序头文件,不仅让攻击者了解了程序结构方便逆向,还让着急赶进度时写出的欠完善的程序给同行留下笑柄。所以,我们迫切的希望混淆自己的代码。混淆的常规思路混淆分许多思路,比如:1)花代码花指令,即随意往程序中加入迷惑人的代码指令2)易读
- iOS逆向学习之五(加壳?脱壳?)
Andres工坊
加壳通常我们从AppStore下载的应用,拿到安装包之后,通过class-dump导出头文件的时候,会发现无法导出头文件,原因就是AppStore对我们上传的App进行了加壳操作。什么是加壳?利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目的未加壳,我们App的可执行文件一旦执行,那么可执行文件中的代码会被装载到内存中加壳后,可执行文件中的所有代码被加密之后就无
- python混淆ios代码_iOS 代码混淆的简单使用
weixin_39763293
python混淆ios代码
1.工具下载http://stevenygard.com/projects/class-dump/选择dmg安装包2.打开终端输入:open/usr/local/bin3.4.修改权限在终端键入:sudochmod777/usr/local/bin/class-dump5.使用Python3自动发包工具解压包后缀为zipPython脚本如下(上传蒲公英脚本可以忽略)#!/usr/bin/envpy
- iOS 安全探索:字符串加密
Inlight先森
前言一个项目中的明文字符串不计其数,但是有一些是程序的敏感信息的话如果不进行加密和混淆处理,反编译者就会很容易找到我们的敏感信息。拿到这些敏感信息之后就很容易分析我们的程序,业务逻辑进而做一些可能对我们不是很友好的事情,所以一些敏感明文字符串还是有必要做一下加密,让敏感信息更加安全。特别是对于我们金融类的APP开发。反编译工具这里介绍几个常用的:(1)class-dump主要用来反编译一个库文件或
- MAC 配置环境变量
动力机车
例如:配置Class-dump环境变量1、vim~/.bash_profile2、3、重启生效
- iOS逆向, 基础工具之class-dump
码农老王
class-dump顾名思义就是来dump头文件的工具,简单好用下载地址先下载class-dump.dmg,然后把里面的class-dump复制出来就可以用了,如果希望直接运行可执行文件那么加到/usr/bin里.但是macos的限制,/usr/bin不让写文件,可以参考这里修改权限.然后直接复制到/usr/bin下,chomd777/usr/bin/class-dump直接调用class-dum
- Runtime源码分析汇总-准备工作
充满活力的早晨
其实runtime这个技术大家都很熟悉了。只是源码看了始终忘记,特此汇总。留作以后查阅准备工作我用的下载地址我的源码地址0bjc4-680。工具class-dump
- ASM系列五 利用TreeApi 解析生成Class
lijingyao8206
ASM字节码动态生成ClassNodeTreeAPI
前面CoreApi的介绍部分基本涵盖了ASMCore包下面的主要API及功能,其中还有一部分关于MetaData的解析和生成就不再赘述。这篇开始介绍ASM另一部分主要的Api。TreeApi。这一部分源码是关联的asm-tree-5.0.4的版本。
在介绍前,先要知道一点, Tree工程的接口基本可以完
- 链表树——复合数据结构应用实例
bardo
数据结构树型结构表结构设计链表菜单排序
我们清楚:数据库设计中,表结构设计的好坏,直接影响程序的复杂度。所以,本文就无限级分类(目录)树与链表的复合在表设计中的应用进行探讨。当然,什么是树,什么是链表,这里不作介绍。有兴趣可以去看相关的教材。
需求简介:
经常遇到这样的需求,我们希望能将保存在数据库中的树结构能够按确定的顺序读出来。比如,多级菜单、组织结构、商品分类。更具体的,我们希望某个二级菜单在这一级别中就是第一个。虽然它是最后
- 为啥要用位运算代替取模呢
chenchao051
位运算哈希汇编
在hash中查找key的时候,经常会发现用&取代%,先看两段代码吧,
JDK6中的HashMap中的indexFor方法:
/**
* Returns index for hash code h.
*/
static int indexFor(int h, int length) {
- 最近的情况
麦田的设计者
生活感悟计划软考想
今天是2015年4月27号
整理一下最近的思绪以及要完成的任务
1、最近在驾校科目二练车,每周四天,练三周。其实做什么都要用心,追求合理的途径解决。为
- PHP去掉字符串中最后一个字符的方法
IT独行者
PHP字符串
今天在PHP项目开发中遇到一个需求,去掉字符串中的最后一个字符 原字符串1,2,3,4,5,6, 去掉最后一个字符",",最终结果为1,2,3,4,5,6 代码如下:
$str = "1,2,3,4,5,6,";
$newstr = substr($str,0,strlen($str)-1);
echo $newstr;
- hadoop在linux上单机安装过程
_wy_
linuxhadoop
1、安装JDK
jdk版本最好是1.6以上,可以使用执行命令java -version查看当前JAVA版本号,如果报命令不存在或版本比较低,则需要安装一个高版本的JDK,并在/etc/profile的文件末尾,根据本机JDK实际的安装位置加上以下几行:
export JAVA_HOME=/usr/java/jdk1.7.0_25  
- JAVA进阶----分布式事务的一种简单处理方法
无量
多系统交互分布式事务
每个方法都是原子操作:
提供第三方服务的系统,要同时提供执行方法和对应的回滚方法
A系统调用B,C,D系统完成分布式事务
=========执行开始========
A.aa();
try {
B.bb();
} catch(Exception e) {
A.rollbackAa();
}
try {
C.cc();
} catch(Excep
- 安墨移动广 告:移动DSP厚积薄发 引领未来广 告业发展命脉
矮蛋蛋
hadoop互联网
“谁掌握了强大的DSP技术,谁将引领未来的广 告行业发展命脉。”2014年,移动广 告行业的热点非移动DSP莫属。各个圈子都在纷纷谈论,认为移动DSP是行业突破点,一时间许多移动广 告联盟风起云涌,竞相推出专属移动DSP产品。
到底什么是移动DSP呢?
DSP(Demand-SidePlatform),就是需求方平台,为解决广 告主投放的各种需求,真正实现人群定位的精准广
- myelipse设置
alafqq
IP
在一个项目的完整的生命周期中,其维护费用,往往是其开发费用的数倍。因此项目的可维护性、可复用性是衡量一个项目好坏的关键。而注释则是可维护性中必不可少的一环。
注释模板导入步骤
安装方法:
打开eclipse/myeclipse
选择 window-->Preferences-->JAVA-->Code-->Code
- java数组
百合不是茶
java数组
java数组的 声明 创建 初始化; java支持C语言
数组中的每个数都有唯一的一个下标
一维数组的定义 声明: int[] a = new int[3];声明数组中有三个数int[3]
int[] a 中有三个数,下标从0开始,可以同过for来遍历数组中的数
- javascript读取表单数据
bijian1013
JavaScript
利用javascript读取表单数据,可以利用以下三种方法获取:
1、通过表单ID属性:var a = document.getElementByIdx_x_x("id");
2、通过表单名称属性:var b = document.getElementsByName("name");
3、直接通过表单名字获取:var c = form.content.
- 探索JUnit4扩展:使用Theory
bijian1013
javaJUnitTheory
理论机制(Theory)
一.为什么要引用理论机制(Theory)
当今软件开发中,测试驱动开发(TDD — Test-driven development)越发流行。为什么 TDD 会如此流行呢?因为它确实拥有很多优点,它允许开发人员通过简单的例子来指定和表明他们代码的行为意图。
TDD 的优点:
&nb
- [Spring Data Mongo一]Spring Mongo Template操作MongoDB
bit1129
template
什么是Spring Data Mongo
Spring Data MongoDB项目对访问MongoDB的Java客户端API进行了封装,这种封装类似于Spring封装Hibernate和JDBC而提供的HibernateTemplate和JDBCTemplate,主要能力包括
1. 封装客户端跟MongoDB的链接管理
2. 文档-对象映射,通过注解:@Document(collectio
- 【Kafka八】Zookeeper上关于Kafka的配置信息
bit1129
zookeeper
问题:
1. Kafka的哪些信息记录在Zookeeper中 2. Consumer Group消费的每个Partition的Offset信息存放在什么位置
3. Topic的每个Partition存放在哪个Broker上的信息存放在哪里
4. Producer跟Zookeeper究竟有没有关系?没有关系!!!
//consumers、config、brokers、cont
- java OOM内存异常的四种类型及异常与解决方案
ronin47
java OOM 内存异常
OOM异常的四种类型:
一: StackOverflowError :通常因为递归函数引起(死递归,递归太深)。-Xss 128k 一般够用。
二: out Of memory: PermGen Space:通常是动态类大多,比如web 服务器自动更新部署时引起。-Xmx
- java-实现链表反转-递归和非递归实现
bylijinnan
java
20120422更新:
对链表中部分节点进行反转操作,这些节点相隔k个:
0->1->2->3->4->5->6->7->8->9
k=2
8->1->6->3->4->5->2->7->0->9
注意1 3 5 7 9 位置是不变的。
解法:
将链表拆成两部分:
a.0-&
- Netty源码学习-DelimiterBasedFrameDecoder
bylijinnan
javanetty
看DelimiterBasedFrameDecoder的API,有举例:
接收到的ChannelBuffer如下:
+--------------+
| ABC\nDEF\r\n |
+--------------+
经过DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())之后,得到:
+-----+----
- linux的一些命令 -查看cc攻击-网口ip统计等
hotsunshine
linux
Linux判断CC攻击命令详解
2011年12月23日 ⁄ 安全 ⁄ 暂无评论
查看所有80端口的连接数
netstat -nat|grep -i '80'|wc -l
对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
查看TCP连接状态
n
- Spring获取SessionFactory
ctrain
sessionFactory
String sql = "select sysdate from dual";
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
String[] names = wac.getBeanDefinitionNames();
for(int i=0; i&
- Hive几种导出数据方式
daizj
hive数据导出
Hive几种导出数据方式
1.拷贝文件
如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以。
hadoop fs –cp source_path target_path
2.导出到本地文件系统
--不能使用insert into local directory来导出数据,会报错
--只能使用
- 编程之美
dcj3sjt126com
编程PHP重构
我个人的 PHP 编程经验中,递归调用常常与静态变量使用。静态变量的含义可以参考 PHP 手册。希望下面的代码,会更有利于对递归以及静态变量的理解
header("Content-type: text/plain");
function static_function () {
static $i = 0;
if ($i++ < 1
- Android保存用户名和密码
dcj3sjt126com
android
转自:http://www.2cto.com/kf/201401/272336.html
我们不管在开发一个项目或者使用别人的项目,都有用户登录功能,为了让用户的体验效果更好,我们通常会做一个功能,叫做保存用户,这样做的目地就是为了让用户下一次再使用该程序不会重新输入用户名和密码,这里我使用3种方式来存储用户名和密码
1、通过普通 的txt文本存储
2、通过properties属性文件进行存
- Oracle 复习笔记之同义词
eksliang
Oracle 同义词Oracle synonym
转载请出自出处:http://eksliang.iteye.com/blog/2098861
1.什么是同义词
同义词是现有模式对象的一个别名。
概念性的东西,什么是模式呢?创建一个用户,就相应的创建了 一个模式。模式是指数据库对象,是对用户所创建的数据对象的总称。模式对象包括表、视图、索引、同义词、序列、过
- Ajax案例
gongmeitao
Ajaxjsp
数据库采用Sql Server2005
项目名称为:Ajax_Demo
1.com.demo.conn包
package com.demo.conn;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;
//获取数据库连接的类public class DBConnec
- ASP.NET中Request.RawUrl、Request.Url的区别
hvt
.netWebC#asp.nethovertree
如果访问的地址是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree%3C&n=myslider#zonemenu那么Request.Url.ToString() 的值是:http://h.keleyi.com/guestbook/addmessage.aspx?key=hovertree<&
- SVG 教程 (七)SVG 实例,SVG 参考手册
天梯梦
svg
SVG 实例 在线实例
下面的例子是把SVG代码直接嵌入到HTML代码中。
谷歌Chrome,火狐,Internet Explorer9,和Safari都支持。
注意:下面的例子将不会在Opera运行,即使Opera支持SVG - 它也不支持SVG在HTML代码中直接使用。 SVG 实例
SVG基本形状
一个圆
矩形
不透明矩形
一个矩形不透明2
一个带圆角矩
- 事务管理
luyulong
javaspring编程事务
事物管理
spring事物的好处
为不同的事物API提供了一致的编程模型
支持声明式事务管理
提供比大多数事务API更简单更易于使用的编程式事务管理API
整合spring的各种数据访问抽象
TransactionDefinition
定义了事务策略
int getIsolationLevel()得到当前事务的隔离级别
READ_COMMITTED
- 基础数据结构和算法十一:Red-black binary search tree
sunwinner
AlgorithmRed-black
The insertion algorithm for 2-3 trees just described is not difficult to understand; now, we will see that it is also not difficult to implement. We will consider a simple representation known
- centos同步时间
stunizhengjia
linux集群同步时间
做了集群,时间的同步就显得非常必要了。 以下是查到的如何做时间同步。 在CentOS 5不再区分客户端和服务器,只要配置了NTP,它就会提供NTP服务。 1)确认已经ntp程序包: # yum install ntp 2)配置时间源(默认就行,不需要修改) # vi /etc/ntp.conf server pool.ntp.o
- ITeye 9月技术图书有奖试读获奖名单公布
ITeye管理员
ITeye
ITeye携手博文视点举办的9月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。 9月试读活动回顾:http://webmaster.iteye.com/blog/2118112本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《NFC:Arduino、Andro