PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第212回]
●PIC16F627(7)リバースエンジニアリング
PIC16F627のBULK ERASEができないことについては[第208回]ほかで書いてきました。
[第210回]にも書きましたがとにかくおかしいのですよね。
ちゃんとドキュメントに書いてある通りにやっているはずなのですがまったく消去してくれません。
こういう場合にはまずドキュメントを疑ったりいたします。
自分が間違っているとは思わないものです。
まことに困ったものであります。
自分は断じて間違っていない。
ちゃんとドキュメントの通りにプログラムを書いている(はず…)。
なのにその通りに動作しないのは。
これはきっとあれだ。
ドキュメントのどこかに記載ミスがあるに違いないのだ。
かくして問題解決からどんどん遠ざかっていってしまいます。
いずれことの真相が明らかになります。
ま。
それはしばし置くことにしまして。
とにかくどうにも納得できません。
ところがかの秋月のPICプログラマPICKITUさまは何の問題もなくきれいに消去されてしまわれます。
一体PICKITUさまは何をなさっておいでなのでしょう。
ここはやっぱりそっと覗いてみたくなります。
だめ。決して見てはなりませぬ。
そう言われると余計に見たくなりまする。
とうとう見てしまったのですね。
ああ。鶴が飛んでいく。
何の話だ。
秋月のPICKITUにはPIC18F2550が使われています。
普通はこういうものはコピープロテクトがかかっているはずなのですが。
なぜかそれがかかっていなかったのです(「PICでUSBを!」[第11回])。
あれ?
余談ですけれど。
この記事の初出は2009年12月になっています。
もう15年も前の話です。
あらためてざっと読んでみましたらなんとPIC18FのためのPIC WRITERプログラムを作ったと書いてあります。
なんだ。
そんな昔にちゃんと作っているじゃないか。
当時のファイルが残っているかどうかと思って探してみましたら。
ありました!
;;; pic writer for pic18F
;;; 09/12/02 12/03 12/04 12/05 12/6 12/7 12/8
;
RDBF=1000
RDBF2=1010
RDBFMAX=EFFF
PRNPORT=F000;&F001
DVIDH=F002
DVIDL=F003
ERRMK=F004;1BYTE
;
LDFILEHDL=F006
SVFILEHDL=F008
HADRS_BASE=F00A
RDBFEND=F00C
ADRSWK=F00E
READADRS=F010
DUMPADRS=F012
;
KEYBF=F020
KEYBF1=F021
KEYBF2=F022
;
ORG=100
;
CLD
MOV [PRNPORT]W,378
MOV [RDBFEND]W,RDBF
MOV [*DUMPADRS]W,RDBF
MOV [READADRS]W,0
MOV DX,TSTART
MOV AH,9
INT 21
CALL CRLF
;
; PICWEITER INIT
;
|
これは8086アセンブラですね。
Windows98のプリンタポートを使ったPIC18F用のプログラムです。
そうかあ。
書いていたんだ。
すっかり忘れていました。
ま。これは余談でありました。
つい懐かしくなりまして。
本題に戻ります。
ですからPICKITUのPIC18F2550のプログラムを読み出してそれを解読すれば何をやってるかはわかるはず。
理屈としてはそうなります。
でも。
言うは易く行なうはめっちゃ困難でありまする。
そんなことをやりますかねえ。
ひと様が書いたプログラムの解読なんてとてもやる気にはなれません。
おまけに読み出せるのはPICプログラムのマシン語コードです。
そんなものやってられませんでしょう。
ソフトもハードもまるごとコピーして、なんて某国発のモノでよく見かけますけれど。
それはいかんでしょう。
でも意外とよく聞く話ではあります。
開発する側もそこはいろいろワナをしかけたりしまして。
プログラムコードのどこかにそっと開発者の名前なんかを暗号的に散りばめたり、回路の中に使わない(使えない)ダミー回路を付けたりして。
これが動かぬ証拠じゃあ。
なんてことになったりして。
そうそう思い出しました。
「鉄腕アトム」に出てきますね。
壊れてしまったコバルトを某国が「親切にも」直してくれるのですけれど、ただ直すのではなくてついでに解体して中身をそっくりコピーして自国のロボットにその回路を移植してしまいます。
アトムからその話を聞いた御茶ノ水博士は突然笑い出します。
「え?全部コピーした?そっくりそのまま?」
最後にとんでもないオチがあります。
いやあ。
さすが手塚治虫です。
雑誌「少年」昭和29年6月「コバルトの巻」です。
某国のM44号なんてロボットが登場します。
もっともなにしろ昭和29年ですからアトムは超小型電子脳ながらなんと真空管が使われているのです。
あ。
また余談になってしまいました。
こういうのをリバースエンジニアリングといいます。
そっくりそのままコピーはいけませぬ。
でも昔からみんなフツーにやってきたのではありませんか。
技術とかワザなども教わるのではなくて盗むのだとか。
丸ごとコピーは特許権の侵害になったりしますがそれをヒントに自分なりの工夫で発展させればそれはもうオリジナルです。
学ぶよりも真似よとか。
そこに技術の進歩があるのかもしれません。
えっと。
何の話でしたっけ。
そうそう。
PIC16F627のBULK ERASEがどうしてもできません。
でも秋月のPICKITUだとちゃんとできてしまいます。
一体どうやっているのだろう。
ごく普通に感じる疑問であります。
ならば。
PICKITUに搭載しているPIC18F2550からプログラムコードを読み出してそれを解読するか?
んなことはやりませぬ。
んな面倒なことはやらずとも。
書き込みとか消去の際にPICプログラマから出力されるPGC(クロックパルス)とPGD(データパルス)を読めば何をやっているかわかるはず。
どうやって?
おお。
LOGIANAがあるではないか?
しかし。
思ったほど簡単なことではありませんでした。
つい余談をしたりしていて時間がなくなってしまいました。
次回に続きます。
PICBASICコンパイラ[第212回]
2025.2.6 upload
前へ
次へ
ホームページトップへ戻る