CN111563742B - 智能合约交易顺序依赖漏洞变异模糊测试方法 - Google Patents
智能合约交易顺序依赖漏洞变异模糊测试方法 Download PDFInfo
- Publication number
- CN111563742B CN111563742B CN202010390815.0A CN202010390815A CN111563742B CN 111563742 B CN111563742 B CN 111563742B CN 202010390815 A CN202010390815 A CN 202010390815A CN 111563742 B CN111563742 B CN 111563742B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- test data
- function
- transaction sequence
- tested
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Computing Systems (AREA)
- Finance (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明属于软件测试技术领域,具体涉及智能合约漏洞测试问题,提供了智能合约交易顺序依赖漏洞变异模糊测试方法,解决交易顺序依赖漏洞检测误报多和开销大的问题。本方法调换智能合约中最后两个函数调用顺序,通过插桩记录测试数据执行时的智能合约分支覆盖信息和发送的以太币值,基于调换前后的以太币值是否一致来检测智能合约中的交易顺序依赖漏洞,在特定时间内变异生成新的覆盖新分支的测试数据来持续测试被测智能合约。本发明提供一种误报少且开销小的交易顺序依赖漏洞测试方法,用于智能合约交易顺序依赖漏洞的自动化检测。
Description
技术领域
本发明属于软件测试技术领域,具体涉及到智能合约中的交易顺序依赖漏洞测试问题,提供了一种智能合约交易顺序依赖漏洞变异模糊测试方法,主要解决现有的交易顺序依赖漏洞检测方法中误报数多、开销大的问题,实现智能合约交易顺序依赖漏洞的高效测试。
背景技术
以智能合约为代表的区块链技术在数字支付、金融资产处置、云计算、物联网、共享经济等方面有着广阔的应用前景,但是智能合约漏洞频出,智能合约中出现频率最高的10类漏洞为:代码重入、访问控制、整数溢出、未检查call调用返回值、拒绝服务、可预测的随机处理、交易顺序依赖、时间戳依赖、短地址攻击以及其他未知漏洞类型,交易顺序依赖作为智能合约中经常发生的漏洞备受关注。
当任何智能合约功能依赖于要确认的交易顺序时,同一个区块内的交易顺序很容易受到操纵,产生交易顺序依赖(Transaction-Ordering Dependence,TOD)漏洞。交易顺序依赖也称为竞争条件/非法预先交易问题,即区块中不同的交易顺序会产生不同的交易状态,因此攻击者可以监视交易池中的交易,利用该漏洞对合约进行攻击,从而转走相应的以太币,常见的ERC20代币标准中的approve和transferFrom两步式交易的转账方式中就存在交易顺序依赖漏洞。因为大多数智能合约都遵从ERC20标准,因此有必要通过自动化手段测试合约中是否含交易顺序依赖漏洞,提高智能合约的安全性。
目前有智能合约漏洞检测工具oyente和securify可以检测交易顺序依赖漏洞,工具oyente采取动态符号执行方法检测交易顺序依赖漏洞,随着路径深度的增加约束条件也会变得更为复杂,使得约束求解器很难进行求解,因此开销大、执行效率低。工具securify采用形式化验证方法检测交易顺序依赖漏洞,与自定义的遵从与违反模式进行匹配,静态分析智能合约中是否存在交易顺序依赖漏洞,会产生大量的误报。因此目前交易顺序依赖漏洞检测方法误报率高并且开销大。
模糊测试是一种高效的自动化测试技术,通过随机的方式来生成大量的测试数据,基于覆盖信息来决定是否保留新生成的测试数据,通过执行生成的测试数据发现智能合约中的漏洞。变异模糊测试提高了路径覆盖率同时内存开销小、误报率低,能够有效解决现有的交易顺序依赖漏洞检测方法中的误报率高、开销大等问题。
为此,本发明结合模糊测试过程,实现了一种交易顺序依赖漏洞变异模糊测试方法,本方法通过变异扩增测试数据,融入模糊测试误报率低、开销小等特点,同时该方法只通过调换最后两个函数生成不同的函数调用顺序,极大的减少了交易顺序依赖漏洞检测的时间开销。
发明内容
本发明解决的问题:克服现有智能合约交易顺序依赖漏洞测试方法中误报多、开销大等问题,将变异模糊测试应用于智能合约交易顺序依赖漏洞测试问题中,为交易顺序依赖漏洞测试问题提供一种简单高效的测试方法,使得交易顺序依赖漏洞检测误报少、开销小,从而提高测试效率。
(1)以太坊中的智能合约运行在以太坊虚拟机中,对于被测智能合约首先会为其自动配置一个区块链网络,并部署该合约。本发明提出的智能合约交易顺序依赖漏洞变异模糊测试方法流程如图1所示:编译被测智能合约,生成智能合约字节码和智能合约应用程序二进制接口,其中编译后的智能合约字节码以十六进制形式表示,包含三个部分:部署代码、智能合约代码、智能合约加密指纹;
(2)根据被测智能合约应用程序二进制接口模糊生成测试数据,具体过程为:首先解析被测智能合约应用程序二进制接口,提取所有函数签名,函数签名包括函数描述以及每个函数参数的数据类型,智能合约函数参数数据类型如果是地址类型,地址数据类型的测试数据模糊生成过程为:首先对被测智能合约的每一个应用程序二进制接口生成私有的智能合约池,智能合约池中存放所有支持该应用程序二进制接口中的函数所调用的智能合约的地址,然后随机选择智能合约池中存放的智能合约地址作为测试数据;如果智能合约函数参数数据类型是定长类型参数,随机地从参数的合法测试数据域中选择一组数值作为测试数据;如果智能合约函数参数数据类型是不定长类型参数,首先随机地生成一个正数作为该参数的长度,随后再对参数中的各个元素随机地从合法测试数据域中选择一组数值作为测试数据;
(3)被测智能合约插桩,具体过程为:调换智能合约中最后两个函数产生的两个不同函数调用顺序的被测智能合约,对原被测智能合约和调换最后两个函数后的被测智能合约字节码都进行函数插桩和分支覆盖插桩:被测智能合约的每个函数***函数桩,函数内每个分支点***分支桩;
(4)部署被测智能合约,具体过程为:以太坊虚拟机创建智能合约账户,运行步骤(3)插桩后的两个被测智能合约的部署代码,并将智能合约代码和智能合约加密指纹存储到区块链上,再将二者的存储地址赋值给智能合约账户中的代码哈希字段;
(5)监测被测智能合约执行过程,具体过程为:在部署的被测智能合约上执行生成的测试数据,记录2个被测智能合约的分支覆盖信息和交易顺序依赖漏洞的指令信息,具体为:执行一个测试数据,记录测试数据执行的智能合约中每个分支的覆盖次数,同时获取每个分支指令中包含的当前函数对应的发送的以太币值;在执行完所有的测试数据后,所有测试数据的分支覆盖信息和函数中发送的以太币值都保存在执行日志中;
(6)被测智能合约交易顺序依赖漏洞检测,具体过程为:对每一个测试数据,在执行日志中获取每个函数中发送的以太币值,如果存在相同函数中发送的以太币值不相同,则返回该测试数据检测到交易顺序依赖漏洞,输出发现交易顺序依赖漏洞的检测结果;如果所有相同的函数中发送的以太币值均相同,则本测试数据没有检测出交易顺序依赖漏洞,进入步骤(7);
(7)判断交易顺序依赖漏洞检测时间是否超过用户自定义的检测时间,如果检测时间超过用户自定义的检测时间,用户自定义时间默认为120秒,则输出未发现交易顺序依赖漏洞的检测结果,测试结束;如果检测时间未超过用户自定义的检测时间则进入步骤(8)基于已有的测试数据分支覆盖信息变异生成覆盖新分支的新测试数据;
(8)变异生成覆盖新分支的测试数据,具体过程为:将该测试数据通过变异操作生成新的测试数据,其中包括4个变异操作,变异操作1:根据位或字节进行翻转,变异操作2:以单字节、双字节、四字节为单位进行加减操作,变异操作3:删除、复制、重写、***新的字节块,变异操作4:两个测试数据随机选取位置进行交叉互换;根据执行日志可以判断出当前测试数据是否可以覆盖到新的分支,如果覆盖到则保留覆盖新分支的测试数据进入步骤(5),如果没有覆盖到新的覆盖分支则进入步骤(7)。
有益效果:
目前,现有的智能合约交易顺序依赖漏洞检测方法存在误报多、开销大的问题,为此本发明采用变异模糊测试方法,本方法调换智能合约中最后两个函数调用顺序,通过插桩记录测试数据执行时的智能合约分支覆盖信息和发送的以太币值,基于调换前后的以太币值是否一致来检测智能合约中的交易顺序依赖漏洞,在特定时间内变异生成新的覆盖新分支的测试数据来持续测试被测智能合约,该方法可以有效降低误报数与检测开销。
选取以太坊中987个ERC20代币合约作为评测对象,然后分别在Oyente、Securify和本方法中进行检测,其中三种方法针对交易顺序依赖漏洞的正确检测数与误报数如图2所示,从图2中可以看出在检测的987个合约中,本方法正确检测出交易顺序依赖漏洞的数量较多,误报最低,同时相对于误报较多的Securify该方法的误报显著降低。
同时在检测过程中,被测智能合约的平均时间开销与平均内存开销如表1-1所示:
表1-1三种检测方法的平均开销分析
由表1-1中的三种检测方法的平均开销分析可知,本方法相对与Oyente和securify平均时间开销与平均内存开销有所降低。
所以,本方法能够有效降低交易顺序依赖漏洞检测的误报以及检测开销。
附图说明
附图1本发明的方法流程图。
附图2三种方法针对交易顺序依赖漏洞的正确检测数与误报数图。
具体实施方式
以代码清单1中的被测智能合约为例,对本发明提供的交易顺序依赖漏洞变异模糊测试方法具体实施过程进行描述:
(1)将代码清单1中的被测智能合约保存在Puzzle.sol文件中,然后将其编译为Puzzle.json文件,其中Puzzle.json文件中包含智能合约的应用程序二进制接口和智能合约编译后的字节码。
代码清单1被测智能合约代码
(2)根据Puzzle.json中的应用程序二进制接口随机地从参数的合法测试数据域中为uint256类型的submission变量选择一组数值作为测试数据。
(3)调换setReward函数和claimReward函数的调用顺序,生成两组不同的函数调用顺序,即第一组函数调用顺序为先调用setReward函数再调用claimReward函数,第二组函数调用顺序为先调用claimReward函数再调用setReward函数,对原被测智能合约和调换最后两个函数后的被测智能合约字节码都进行函数插桩和分支覆盖插桩。
(4)运行插桩后的两个被测智能合约的部署代码,并将智能合约代码和智能合约加密指纹存储到区块链上,再将二者的存储地址赋值给智能合约账户中的代码哈希字段。
(5)执行生成的测试数据,记录测试数据执行的智能合约中每个分支的覆盖次数,同时获取每个分支指令中包含的当前函数对应的发送的以太币值,在执行完所有的测试数据后,所有测试数据的分支覆盖信息和函数中发送的以太币值都保存在执行日志中。
(6)对每一个测试数据,在执行日志中获取每个函数中发送的以太币值,如果存在相同函数中发送的以太币值不相同,则返回该测试数据检测到交易顺序依赖漏洞,输出发现交易顺序依赖漏洞的检测结果,如果所有相同的函数中发送的以太币值均相同,则本测试数据没有检测出交易顺序依赖漏洞,则判断检测时间是否超过120秒。
(7)如果检测时间超过120秒,则输出未发现交易顺序依赖漏洞的检测结果,检测结束,如果检测时间未超过120秒则进入步骤(8)基于已有的测试数据分支覆盖信息变异生成覆盖新分支的新测试数据。
(8)将该测试数据通过变异操作生成新的测试数据,其中包括4个变异操作,变异操作1:根据位或字节进行翻转;变异操作2:以单字节、双字节、四字节为单位进行加减操作;变异操作3:删除、复制、重写、***新的字节块;变异操作4:两个测试数据随机选取位置进行交叉互换,根据执行日志可以判断出当前测试数据是否可以覆盖到新的分支,如果覆盖到则保留覆盖新分支的测试数据进入步骤(5),如果没有覆盖到新的覆盖分支则进入步骤(7)。
Claims (1)
1.智能合约交易顺序依赖漏洞变异模糊测试方法,其特征在于包括以下步骤:
(1)编译被测智能合约,生成智能合约字节码和智能合约应用程序二进制接口,其中编译后的智能合约字节码以十六进制形式表示,包含三个部分:部署代码、智能合约代码、智能合约加密指纹;
(2)根据被测智能合约应用程序二进制接口模糊生成测试数据,具体过程为:首先解析被测智能合约应用程序二进制接口,提取所有函数签名,函数签名包括函数描述以及每个函数参数的数据类型,智能合约函数参数数据类型如果是地址类型,地址数据类型的测试数据模糊生成过程为:首先对被测智能合约的每一个应用程序二进制接口生成私有的智能合约池,智能合约池中存放所有支持该应用程序二进制接口中的函数所调用的智能合约的地址,然后随机选择智能合约池中存放的智能合约地址作为测试数据;如果智能合约函数参数数据类型是定长类型参数,随机地从参数的合法测试数据域中选择一组数值作为测试数据;如果智能合约函数参数数据类型是不定长类型参数,首先随机地生成一个正数作为该参数的长度,随后再对参数中的各个元素随机地从合法测试数据域中选择一组数值作为测试数据;
(3)被测智能合约插桩,具体过程为:调换智能合约中最后两个函数产生的两个不同函数调用顺序的被测智能合约,对原被测智能合约和调换最后两个函数后的被测智能合约字节码都进行函数插桩和分支覆盖插桩:被测智能合约的每个函数***函数桩,函数内每个分支点***分支桩;
(4)部署被测智能合约,具体过程为:以太坊虚拟机创建智能合约账户,运行步骤(3)插桩后的两个被测智能合约的部署代码,并将智能合约代码和智能合约加密指纹存储到区块链上,再将二者的存储地址赋值给智能合约账户中的代码哈希字段;
(5)监测被测智能合约执行过程,具体过程为:在部署的被测智能合约上执行生成的测试数据,记录2个被测智能合约的分支覆盖信息和交易顺序依赖漏洞的指令信息,具体为:执行一个测试数据,记录测试数据执行的智能合约中每个分支的覆盖次数,同时获取每个分支指令中包含的当前函数对应的发送的以太币值;在执行完所有的测试数据后,所有测试数据的分支覆盖信息和函数中发送的以太币值都保存在执行日志中;
(6)被测智能合约交易顺序依赖漏洞检测,具体过程为:对每一个测试数据,在执行日志中获取每个函数中发送的以太币值,如果存在相同函数中发送的以太币值不相同,则返回该测试数据检测到交易顺序依赖漏洞,输出发现交易顺序依赖漏洞的检测结果;如果所有相同的函数中发送的以太币值均相同,则本测试数据没有检测出交易顺序依赖漏洞,进入步骤(7);
(7)判断交易顺序依赖漏洞检测时间是否超过用户自定义的检测时间,如果检测时间超过用户自定义的检测时间,用户自定义时间默认为120秒,则输出未发现交易顺序依赖漏洞的检测结果,测试结束;如果检测时间未超过用户自定义的检测时间则进入步骤(8)基于已有的测试数据分支覆盖信息变异生成覆盖新分支的新测试数据;
(8)变异生成覆盖新分支的测试数据,具体过程为:将该测试数据通过变异操作生成新的测试数据,其中包括4个变异操作,变异操作1:根据位或字节进行翻转,变异操作2:以单字节、双字节、四字节为单位进行加减操作,变异操作3:删除、复制、重写、***新的字节块,变异操作4:两个测试数据随机选取位置进行交叉互换;根据执行日志可以判断出当前测试数据是否可以覆盖到新的分支,如果覆盖到则保留覆盖新分支的测试数据进入步骤(5),如果没有覆盖到新的覆盖分支则进入步骤(7)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010390815.0A CN111563742B (zh) | 2020-05-11 | 2020-05-11 | 智能合约交易顺序依赖漏洞变异模糊测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010390815.0A CN111563742B (zh) | 2020-05-11 | 2020-05-11 | 智能合约交易顺序依赖漏洞变异模糊测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111563742A CN111563742A (zh) | 2020-08-21 |
CN111563742B true CN111563742B (zh) | 2023-08-15 |
Family
ID=72074668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010390815.0A Active CN111563742B (zh) | 2020-05-11 | 2020-05-11 | 智能合约交易顺序依赖漏洞变异模糊测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111563742B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015628B (zh) * | 2020-09-01 | 2023-06-30 | 北京物资学院 | 一种智能合约函数级动态监测分析***及实现方法 |
CN113515442A (zh) * | 2021-03-26 | 2021-10-19 | 南京航空航天大学 | 基于函数签名相似度计算的智能合约测试种子推荐方法 |
CN112860588B (zh) * | 2021-04-07 | 2024-03-29 | 中国科学技术大学 | 一种针对智能合约跨合约漏洞的模糊测试方法 |
CN113190850B (zh) * | 2021-05-24 | 2022-10-11 | 电子科技大学 | 一种智能合约短地址攻击检测工具的实现方法 |
CN113448870A (zh) * | 2021-07-19 | 2021-09-28 | 东南大学 | 一种基于动态执行信息分析的智能合约重入缺陷检测方法 |
CN114218809B (zh) * | 2021-12-29 | 2022-06-03 | 中国科学技术大学 | 面向以太坊智能合约的协议自动形式化建模方法与*** |
CN114510420B (zh) * | 2022-01-28 | 2024-05-10 | 江苏大学 | 一种基于蜕变测试的区块链智能合约测试方法 |
CN115659358B (zh) * | 2022-12-28 | 2023-03-17 | 北京邮电大学 | 一种智能合约模糊测试方法及装置 |
CN116150765B (zh) * | 2023-02-28 | 2023-08-04 | 上海安般信息科技有限公司 | 一种基于api依赖的模糊变异方法及装置 |
CN116578988B (zh) * | 2023-05-23 | 2024-01-23 | 海南大学 | 一种智能合约的漏洞检测方法和装置、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800175A (zh) * | 2019-02-20 | 2019-05-24 | 河海大学 | 一种基于代码插桩的以太坊智能合约重入漏洞检测方法 |
CN110287002A (zh) * | 2019-06-19 | 2019-09-27 | 清华大学 | 一种以太坊虚拟机缺陷检测方法及*** |
CN110399730A (zh) * | 2019-07-24 | 2019-11-01 | 上海交通大学 | 智能合约漏洞的检查方法、***及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190281028A1 (en) * | 2018-03-06 | 2019-09-12 | Michael Thomas Gillan | System and method for decentralized authentication using a distributed transaction-based state machine |
-
2020
- 2020-05-11 CN CN202010390815.0A patent/CN111563742B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800175A (zh) * | 2019-02-20 | 2019-05-24 | 河海大学 | 一种基于代码插桩的以太坊智能合约重入漏洞检测方法 |
CN110287002A (zh) * | 2019-06-19 | 2019-09-27 | 清华大学 | 一种以太坊虚拟机缺陷检测方法及*** |
CN110399730A (zh) * | 2019-07-24 | 2019-11-01 | 上海交通大学 | 智能合约漏洞的检查方法、***及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111563742A (zh) | 2020-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111563742B (zh) | 智能合约交易顺序依赖漏洞变异模糊测试方法 | |
CN110472201B (zh) | 基于区块链的文本相似性检测方法及装置、电子设备 | |
CN110263536B (zh) | 一种区块链中智能合约的监控方法及装置 | |
JP2018535490A (ja) | サービス処理方法及び装置 | |
KR102058697B1 (ko) | 뉴럴네트워크를 이용한 자동학습 기반의 딥러닝 학습 모델을 위한 이상징후 탐지 시스템 | |
CN108123956B (zh) | 基于Petri网的密码误用漏洞检测方法及*** | |
CN111683084B (zh) | 一种智能合约入侵检测方法、装置、终端设备及存储介质 | |
CN112749389B (zh) | 一种检测智能合约破坏敏感数据漏洞的检测方法及装置 | |
CN106789837B (zh) | 网络异常行为检测方法及检测装置 | |
CN110839088A (zh) | 一种被虚拟货币挖矿的检测方法、***、装置及存储介质 | |
CN114996126A (zh) | 一种针对eosio智能合约的漏洞检测方法及*** | |
CN111049828B (zh) | 网络攻击检测及响应方法及*** | |
CN114024761B (zh) | 网络威胁数据的检测方法、装置、存储介质及电子设备 | |
CN113312620A (zh) | 一种程序安全检测方法及装置、处理器芯片、服务器 | |
KR20220101952A (ko) | 비트코인 불법거래 탐지 장치 및 방법 | |
CN114091016A (zh) | 异常性检测的方法、设备和计算机程序产品 | |
CN117118661A (zh) | 基于模糊测试的闭源攻击合约自动识别方法、***及设备 | |
CN114285587A (zh) | 域名鉴别方法和装置、域名分类模型的获取方法和装置 | |
CN116484390A (zh) | 一种基于元数据和动态插桩技术的堆漏洞攻击检测方法、设备及介质 | |
CN112560085B (zh) | 业务预测模型的隐私保护方法及装置 | |
JP7180765B2 (ja) | 学習装置、判定装置、学習方法、判定方法、学習プログラムおよび判定プログラム | |
KR20190020523A (ko) | 로그 분석을 이용한 공격 탐지 장치 및 방법 | |
CN106874759A (zh) | 一种木马随机化行为的识别方法及*** | |
CN109214212A (zh) | 信息防泄露方法及装置 | |
JP7361997B1 (ja) | 配置場所選定装置、配置場所選定方法、及び配置場所選定プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |