JP7284002B2 - 半導体装置、制御方法およびプログラム - Google Patents
半導体装置、制御方法およびプログラム Download PDFInfo
- Publication number
- JP7284002B2 JP7284002B2 JP2019121018A JP2019121018A JP7284002B2 JP 7284002 B2 JP7284002 B2 JP 7284002B2 JP 2019121018 A JP2019121018 A JP 2019121018A JP 2019121018 A JP2019121018 A JP 2019121018A JP 7284002 B2 JP7284002 B2 JP 7284002B2
- Authority
- JP
- Japan
- Prior art keywords
- patch
- function
- processing
- module
- function module
- 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
- 238000000034 method Methods 0.000 title claims description 93
- 239000004065 semiconductor Substances 0.000 title claims description 20
- 238000012545 processing Methods 0.000 claims description 143
- 230000006870 function Effects 0.000 description 346
- 238000012937 correction Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 238000012790 confirmation Methods 0.000 description 10
- 238000000605 extraction Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 6
- 238000007781 pre-processing Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 125000000524 functional group Chemical group 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Description
これらのプログラムは、ICカードの作成時において、書き換えできないプログラムコード(以下、ROM(read only memory)コードと示す)として、マスクROMやフラッシュメモリなどに書き込まれている。
近年、一枚のICカードに対して多くの機能を持たせる場合が多く、プログラムのコード数が多くなり、プログラムの動作に不具合を生じる割合が高くなっている。
そして、パッチプログラムを書き換え可能なフラッシュメモリやEEPROM(electrically erasable programmable read only memory)にロードしておき、ROMコードの置き換えが必要であるか否かを、上記エントリポイントにおいて判定して、不具合のあったROMコードをパッチプログラムで置き換えて、プログラムのROMコードの修正を行っている(例えば、特許文献1参照)。
このとき、処理は、プログラムの関数モジュールのROMコードにおける、エントリポイントが記述された直後のコードに戻され、当該コードから処理が継続される。
このため、関数モジュールのROMコードの修正に対するパッチ処理が十分に反映されず、結果的に関数モジュールの不具合が完全に修正することができない。
図1は、本発明の一実施形態による半導体装置1の構成例を示すブロック図である。
図1において、半導体装置1は、CPU(central processing unit)、メモリなどを構成する半導体素子を用いたIC(integrated circuit)を備え、情報を処理および記憶する装置である。
半導体装置1は、ICカード、SIM(subscriber identity module)カードなどである。図1に示す半導体装置1は、制御部11とデータ入出力部12と記憶部13とを備える。
データ入出力部12は、所定のプロトコルに従って外部装置(不図示)とのデータの送受信を行う。
ROM131には、半導体装置1の製造の際に書き込まれる、ROMコードの形態のプログラム150が記憶されている。このプログラム150は、例えば、公共系、金融系及び交通系などの業界あるいはグループの提供するICカードで利用するサービスの処理を行うアプリケーションプログラムなどである。ROM131において、プログラム150はROMコードで書き込まれているため、不具合を有する関数モジュールが含まれていても書き換えることができない。本実施形態において、ROMコードでプログラムが記載された書き換え不能のROMとしてマスクROM131を用いているが、マスクROMに換えてフラッシュメモリなどの不揮発性メモリを用いてもよい。
本実施形態においては、上記エントリポイントを識別するエントリポイント識別情報が、機能番号及び個別番号との組合せで形成されている。
機能番号は、プログラム150における関数モジュールの各々を機能(例えば、暗号機能、通信機能、数値計算機能などの各種機能)別に分類した機能グループを識別するグループ情報である。
個別番号は、機能番号が示す各々の機能グループにおいて、この機能グループに含まれるパッチのそれぞれを個別に識別するパッチ情報である。
例えば、暗号機能の機能番号が01hであり、暗号機能の機能グループにおける個別番号が02hである場合、エントリポイント識別情報は、0102hで表される。
また、本実施形態においては、1バイトの機能番号と1バイトの個別番号とで、エントリポイント識別情報が2バイトとして説明している。しかしながら、プログラムに含まれる関数モジュール(エントリポイントが付加される関数モジュール)の機能の種類の数と、機能グループにおけるパッチの数とにより、エントリポイント識別情報のバイト数を任意に設定する。
ここで、制御部11は、データ入出力部12を介して、外部装置からパッチモジュール250が供給された場合、パッチモジュール250と、このパッチモジュール250に対応したパッチパラメータ350をEEPROM132に書き込んで記憶させる。
図2は、EEPROM132のパッチパラメータ領域に書き込まれるパッチパラメータ350の構成例を示す図である。
図3において、プログラム150は、例えば、メイン関数モジュール500、関数モジュール600、エントリポイントモジュール700などを備えている。
メイン関数モジュール500には、所定のアプリケーションの機能を実行するために必要な関数501や502などの複数の関数が記述されている。
関数モジュール600は、制御部11が実際に実行する関数501の機能に対応した処理を示す実体のコードが記述されている。
エントリポイント関数601は、エントリポイントモジュール700を呼び出して実行させる関数である。
エントリポイントモジュール700には、制御部11が実際に実行するエントリポイント関数601の機能に対応した処理を示す実体のコードが記述されている。エントリポイントモジュール700には、第1分岐処理701、機能番号抽出処理702、第2分岐処理703が記述されている。ここで、第1分岐処理701は、パッチ有無フラグがONか否かを判定する処理である。機能番号抽出処理702は、エントリポイント識別情報から機能番号を抽出する処理である。第2分岐処理703は、パッチ機能フラグがONか否かを判定する処理である。
第2分岐処理703には、パッチ機能フラグがONの場合に、パッチモジュール800(図4参照)を実行させるパッチ関数704が記述されている。
そして、制御部11は、関数モジュール600がエントリポイント関数601を含む場合、エントリポイント関数601に記述されたエントリポイントモジュール700を呼び出すアドレスを読み込み、エントリポイントモジュール700のROMコードの処理を実行する。
そして、制御部11は、パッチ有無フラグがONであるか否かの判定を行い、ONであれば機能番号抽出処理702の記述の処理を実行し、一方、パッチ有無フラグがOFFであれば、関数モジュール600に戻る処理(return(リターン)処理)を行い、関数モジュール600に記述された処理を実行する。
そして、制御部11は、EEPROM132におけるパッチパラメータ領域に記憶されているパッチパラメータ350において、抽出した機能番号に対応するパッチ機能フラグを参照する。
制御部11は、参照したパッチ機能フラグがONであるか否かの判定を行い、ONであればパッチ関数704に対応してパッチモジュール800の処理を実行し、一方、パッチ機能フラグがOFFであれば、関数モジュール600に戻り、関数モジュール600に記述された処理を実行する。
そして、制御部11は、パッチ領域先頭アドレス305の領域に記憶されているパッチモジュール800に記述された処理を実行する。
図4において、パッチモジュール800には、制御部11が実際に実行するパッチ関数704の入れ替えるべき関数モジュールに対するパッチ処理を示す実体のコードが記述されている。すなわち、パッチモジュール800には、機能番号及び個別番号抽出処理801、パッチ機能フラグ確認処理802、第3分岐処理803、エントリポイント修正処理804、戻り方式選択805、戻り処理(return)807、第3分岐処理808、エントリポイント修正処理809、戻り方式選択810、戻り処理811、パッチ機能フラグ確認処理812などが記述されている。
パッチ機能フラグ確認処理802及び812の各々は、それぞれ機能番号02h、06hのパッチ機能フラグがONであるか否かの判定を行う。このパッチ機能フラグ確認処理は、関数モジュールを置き換えるパッチが少なくとも1個が存在する機能グループに対応して設けられている。
エントリポイント修正処理804及び809の各々は、それぞれエントリー識別情報から抽出された個別番号が01h、03hであった場合に、関数モジュールとパッチとを置き換えるパッチ処理として記述されている。
本実施形態においては、例えば継続方式及び置換方式の各々2通りの戻り方式がある。
ここで、継続方式は、パッチ処理が終了した後、パッチモジュール800を呼び出した関数モジュール600のエントリポイント関数601の直後のコードのアドレスを、パッチモジュール800のパッチからの戻り先として設定する。
このため、継続方式においては、特にパッチモジュール800におけるパッチからの戻り先を設定する必要が無い。
このため、コールスタックに関数モジュールを呼び出す毎に積まれる、return関数によって読み出される戻りアドレスが操作(変更)される。例えばコールツリーを3階層分遡る、すなわち2階層分の戻りアドレスを読み出して削除することで、メイン関数モジュール500における関数501の直後のコードのアドレスを、パッチモジュール800におけるパッチの処理の終了後の戻り先とする。
また、return関数に対して、直接に、戻り先としてメイン関数モジュール500における関数501の直後のコードのアドレスを設定して、パッチモジュール800のパッチから、メイン関数モジュール500における関数501の直後のコードに戻るようにしてもよい。
一方、置換方式の構成の場合、関数モジュール600の処理を全てパッチにより置換され、関数モジュール600のエントリポイント関数601に戻るのではなく、メイン関数モジュール500の関数501の直後のコードに戻るため、関数モジュール600に対した行った修正が確実に反映される。
次に、制御部11は、EEPROM132のパッチパラメータ領域におけるパッチパラメータ350において、抽出した機能番号に対応するパッチ機能フラグを参照する。
そして、制御部11は、抽出した機能番号に対応したパッチ機能フラグ確認処理、例えば、機能番号が02hである場合、パッチ機能フラグ確認処理802を実行する。一方、制御部11は、抽出した機能番号が06hである場合にパッチ機能フラグ確認処理812を実行する。
そして、制御部11は、抽出した機能番号の示すパッチ機能フラグがONである場合、第3分岐処理803、808、…などを順次実行し、抽出した個別番号に対応する第3分岐処理の有無を判定する。例えば、抽出した機能番号が02hであり、機能番号02hのパッチ機能フラグがONである場合、制御部11は、順次、第3分岐処理803、805、…において、抽出した個別番号と一致する第3分岐処理があるか否かの判定を行う。
そして、パッチ処理としてのエントリポイント修正処理804の処理が終了した後、戻り方式選択805が実行される。
このため、置換方式によって、関数モジュール600におけるエントリポイント関数601以降のコードの処理を行わず、パッチ処理を行った後、メイン関数モジュール500における関数501の直後のコードに戻るため、関数モジュール600がパッチに置換される。
一方、制御部11は、抽出した個別番号に対応する第3分岐処理が存在しない場合、メイン関数モジュール500に戻り、関数モジュール600の機能処理をコード記述に対応して実行する。
これにより、本実施形態によれば、関数モジュール600に対する修正処理を行うコードの位置あるいは置き換え範囲に対応して、パッチモジュール800におけるパッチからの戻り先のアドレスを、パッチに記述される戻り方式選択のコードにより任意に設定することができ、置き換える際のパッチのサイズを小さくしたり、関数モジュールに対する修正処理の反映を確実とし、さらに修正を行った関数モジュールに関わる機能の処理速度を向上させることができる。
一方、置換方式による戻り方式選択処理においては、関数モジュール600のエントリポイント関数601の直後に戻るのではなく、メイン関数モジュール500の関数501の直後のコードに戻るため、関数モジュール600の処理の全てがパッチにより置換され、パッチ処理により関数モジュール600に対して行った修正が確実に反映させることができる。
制御部11は、エントリポイント関数601の処理において、エントリポイントモジュール700を呼び出す。制御部11は、EEPROM132におけるパッチパラメータ350を参照し、パッチ有無フラグを読み込む(ステップS2)。
一方、制御部11は、読み込んだパッチ有無フラグがOFFである(図6(a)の記載、パッチ領域先頭アドレスが記述されていない)場合、処理を終了する。すなわち、制御部11は、関数モジュール600に戻り、関数モジュール500における関数501の処理を行う。
上述したステップS2及びステップS3が第1分岐処理である。
制御部11は、EEPROM132におけるパッチパラメータ350を参照し、機能番号に対応する、すなわち機能番号02hに対応するパッチ機能フラグを読み込み、機能グループにパッチがある(関数モジュールに対してパッチが適用されている)ことを確認する(ステップS5)。
上述したステップS5及びステップS6が第2分岐処理である。
このとき、制御部11は、戻り方式として継続方式が設定されている(図7)場合、戻り先アドレスがコールスタックに記載されたアドレスであるため、return関数がコールスタックにおけるアドレス、すなわち、エントリポイントモジュール700のパッチ関数704の直後に戻る。
11…制御部
12…データ入出力部
13…記憶部
111…CPU
131…マスクROM
132…EEPROM
133…RAM
150…プログラム
250,800…パッチモジュール
350…パッチパラメータ
500…メイン関数モジュール
600…関数モジュール
700…エントリポイントモジュール
Claims (6)
- プログラムが記憶され、記憶されたデータの書き換えが不可能な第1記憶部と、
前記プログラムを実行する制御部と、
記憶されたデータの書き換えが可能な第2記憶部と、
前記第2記憶部に記憶される、前記プログラムにおけるエントリポイントの付加された関数モジュールの処理を置き換えるパッチを含むパッチモジュールと
を備え、
前記パッチモジュールにおける前記パッチの各々における処理終了後のリターン命令における戻り先が、当該パッチを呼び出した前記関数モジュールの処理を継続する場合には所定の第1のアドレスに、当該関数モジュールを置換する場合には所定の第2のアドレスに、それぞれ設定されている
ことを特徴とする半導体装置。 - 前記関数モジュールを前記パッチにより置換する場合、前記所定の第2のアドレスが前記プログラムにおける当該関数モジュールを呼び出す関数の直後のコードであり、
一方、前記関数モジュールにおける所定の処理を前記パッチにより修正した後、当該関数モジュールの処理を継続する場合、前記所定の第1のアドレスが前記エントリポイントの直後のアドレスである
ことを特徴とする請求項1に記載の半導体装置。 - 前記関数モジュールを前記パッチにより置換する場合、前記リターン命令が参照するコールスタックにおける前記パッチの処理の終了後の戻り先が、前記プログラムにおける前記関数の直後のコードのアドレスに変更される
ことを特徴とする請求項2に記載の半導体装置。 - 前記リターン命令における戻りアドレスが、前記所定の第1のアドレスとして、前記関数の直後のコードのアドレスに設定されている
ことを特徴とする請求項2に記載の半導体装置。 - 記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイントが付加された関数モジュールを含むプログラムを制御部が実行する際、
前記エントリポイントにより呼び出されるパッチの各々における処理終了後のリターン命令における戻り先が、当該パッチを呼び出した前記関数モジュールの処理を継続する場合には所定の第1のアドレスに、当該関数モジュールを置換する場合には所定の第2のアドレスに、それぞれ設定されている
ことを特徴とする制御方法。 - 記憶されたデータの書き換えが不可能な第1記憶部に記憶された、エントリポイントが付加された関数モジュールを含むプログラムをコンピュータに実行させる際、
前記コンピュータを、
前記エントリポイントにより呼び出されるパッチの各々における処理終了後の戻り先に処理を戻す手段
として機能させ、前記パッチの各々における処理終了後のリターン命令における戻り先が、当該パッチを呼び出した前記関数モジュールの処理を継続する場合には所定の第1のアドレスに、当該関数モジュールを置換する場合には所定の第2のアドレスに、それぞれ設定されている
プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019121018A JP7284002B2 (ja) | 2019-06-28 | 2019-06-28 | 半導体装置、制御方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019121018A JP7284002B2 (ja) | 2019-06-28 | 2019-06-28 | 半導体装置、制御方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021006966A JP2021006966A (ja) | 2021-01-21 |
JP7284002B2 true JP7284002B2 (ja) | 2023-05-30 |
Family
ID=74174473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019121018A Active JP7284002B2 (ja) | 2019-06-28 | 2019-06-28 | 半導体装置、制御方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7284002B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7099431B2 (ja) * | 2019-10-28 | 2022-07-12 | 株式会社三洋物産 | 遊技機 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040107416A1 (en) | 2002-12-02 | 2004-06-03 | Microsoft Corporation | Patching of in-use functions on a running computer system |
JP2010113549A (ja) | 2008-11-06 | 2010-05-20 | Dainippon Printing Co Ltd | Icカードおよびパッチコードの実行方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS52116029A (en) * | 1976-03-26 | 1977-09-29 | Hitachi Ltd | Partial correction system for fixed memory unit |
JPH0452834A (ja) * | 1990-06-15 | 1992-02-20 | Mitsubishi Electric Corp | 電子計算機 |
JPH06187143A (ja) * | 1992-10-23 | 1994-07-08 | Sony Corp | 電子装置 |
-
2019
- 2019-06-28 JP JP2019121018A patent/JP7284002B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040107416A1 (en) | 2002-12-02 | 2004-06-03 | Microsoft Corporation | Patching of in-use functions on a running computer system |
JP2010113549A (ja) | 2008-11-06 | 2010-05-20 | Dainippon Printing Co Ltd | Icカードおよびパッチコードの実行方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2021006966A (ja) | 2021-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2607622C2 (ru) | Запись данных в энергонезависимое запоминающее устройство смарт-карты | |
CN109240729B (zh) | 一种修复固件代码的方法及系统 | |
JP5225071B2 (ja) | 埋め込みシステム、特にスマートカードにロードされる疑似コードの検証方法 | |
JP7284002B2 (ja) | 半導体装置、制御方法およびプログラム | |
US6483746B2 (en) | Electronic apparatus | |
CN106709386B (zh) | 智能卡数据写入方法及装置 | |
JP7284003B2 (ja) | 半導体装置、icカード、制御方法およびプログラム | |
JP2010113549A (ja) | Icカードおよびパッチコードの実行方法 | |
JP6798157B2 (ja) | 電子情報記憶媒体、異常検知方法、及び異常検知プログラム | |
US6275982B1 (en) | Method and device enabling a fixed program to be developed | |
US7353348B2 (en) | Nonvolatile memory and card reader provided with the same | |
JP2008146343A (ja) | Icカード、および、更新プログラムの呼出し方法 | |
JP7021465B2 (ja) | 電子情報記憶装置、icカード、データ復元方法、及びデータ復元プログラム | |
JP5786702B2 (ja) | セキュリティトークン、セキュリティトークンにおける命令の実行方法及びコンピュータプログラム | |
JP7322923B2 (ja) | セキュアエレメント,トランザクション制御方法およびデバイス | |
CN104657185B (zh) | 一种Java卡的Java代码补丁方法 | |
JP7468765B1 (ja) | 電子情報記憶媒体、icチップ、icカード、データ一括更新方法、及びプログラム | |
JP7040053B2 (ja) | 電子情報記憶媒体、icカード、電子情報記憶媒体による情報処理方法及びos | |
JP5983349B2 (ja) | Icカード、データ読み書き方法、及びデータ読み書きプログラム | |
JP6915338B2 (ja) | Icカード | |
JP2018088147A (ja) | 電子情報記憶媒体、icカード、データ異常確認方法、及びデータ異常確認プログラム | |
JP5903945B2 (ja) | Icカード及びコンピュータプログラム | |
JP2004227306A (ja) | ダウンロードプログラム消去機能付きicカード及び同カードにおけるダウンロードプログラム消去方法 | |
JP6015461B2 (ja) | 情報記録媒体、データ読み書き方法、及びデータ読み書きプログラム | |
JP6252341B2 (ja) | 電子情報記憶媒体、情報処理方法、及び情報処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190726 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220513 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230214 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230412 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230425 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230518 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7284002 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313115 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |