アカウント名:
パスワード:
要件が、再度コードを作るプログラムを作成するということならば開発費用までほしいところですが、
既存プログラムの動作仕様解明までのようですし現状動作しているようですのでそうは難しくないのではないかと想像します。
そう思ってチャレンジしたものの諦めた方がすでにいる模様。
▽その他・ご応募されるエンジニアの方へこちらは過去に数名のエンジニアの方に委託しましたが、途中で放棄されてしまっており、難易度はかなり高いものと思われます。(入力パラメータを可変させて出力ロジックを推測するような人海戦術では厳しいと思われます)
どういう人たちかわかりませんけど、PC9801のEXEプログラムを解析してメモリーアロケーションを解析したり逆アセンブルして開発言語を特定し動作を追う経験があった人かどうかですね。
それをやったことない人には開発技術があるってだけでは難しいんじゃないかとは思います。
どのみちプリンタの制御コードの部分は読みにくいですからね。
MSXやX68Kなんかだと、ソフトだけでなく増設メモリとかの拡張カード作ったりとか、いろいろやってる人がいましたよね。MSXはPC98とかと比べると安価だったので、ハードウェアでも手を出しやすかったのもあると思います。
逆アセンブルして開発言語を特定
実行ファイル中に文字列として
> Turbo-C - Copyright (c) 1988 Borland Intl.
とか
> MS Run-Time Library - Copyright (c) 1988, Microsoft Corp
とかあったりすることもあるのでまずはそっからでそ。
開発言語を特定したいのは付着したライブラリ部分を特定したいからです。開発言語がなんとなくわかると固定したライブラリ部分がたぶん存在すると思うのでプログラムが大きくても解析は楽になるはずです。
はずというのは実際見ないとわかんない。
某氏の日記によると [srad.jp]、6月頃にランサーズで同一と思われる案件の募集がされていて、N88-BASICらしい。なんでそんな重要な情報落とすかな。いや素人だから何が重要なのかも理解できていないのか。納期が最短半月とかクレイジーな設定の割に8月になってしれっと再募集かけているあたりも、単にかかりそうな期間が理解できていない感じだし。
なんでそんな重要な情報落とすかな。
情報として不確かだからでは?
その頃だとTurbo-Pascalもあるかもしれませんね。あれはP-codeじゃなくてnativeコード吐くんでしたっけ?
所謂DOS BASICのコンパイラを使ったとかも。プリンタ操作周りが容易そうだし。
DOS BasicといってもNEC製のコンパイラはランタイム環境が必須なので特定できるんで違うだろうなあ。98ハードウェアに特化したBasicコンパイラってあったっけ? QuickBasicとかTurbo-Basicは違うしな。
basicだとしたら、ランタイムも一緒にFDに入ってるんじゃない?200kb程度ですし。
まぁ、あの時代、BASICから初めて、速度の為にBASICのマシン語モニタでマシン語制御→最後はwinfmやらfilmtnやらに内蔵のバイナリエディタでマシン語バイナリ直書きでcomやらexe作成とかアレゲな人がいた時代なので。。。。
バイナリエディタで.COMファイル作成は分かるが.EXEファイルはちょっと盛ってないか?w
64bytesのEXEなら先日バイナリエディタで直接作成しました。終了するだけの単なるstubですが。
>.EXEファイルはちょっと盛ってないか?w
がんばればできるかもしれませんが、がんばっちゃうだけで実用的ではないですね。
Cなんて死ねばいいのに(意訳)と言われて反発したくなるのはその頃の記憶があるからなんだろうね。でもそういうのを老害っていうんだよ。
まだあるっぽいぞhttp://www.dennougumi.co.jp/products/basic98/ver5/index.html [dennougumi.co.jp]
おい、老害
ネイティブコードですよ。intel 486の頃はDelphoiのObject-Pascalもあったはずです。サブルーチンコールの形式がCとは違うので、区別つきます。
> その頃だとTurbo-Pascalもあるかもしれませんね。
手許の 3.02 で生成された実行ファイルを確認したら
> Copyright (C) 1985 BORLAND Inc
7.0 で生成された実行ファイルを確認したら
> Portions Copyright (c) 1983,92 Borland3
という文字列が埋め込まれてた。社名と年代が分かれば処理系を調べる手がかりとしては良いところでは。
開発言語不明というのが引っかかるな。今時なら適当な hex dump tool とか strings で簡単に分かるはずなのに不明なのだから、圧縮か暗号化してあるのかも。
言い回しからして、何かのキージェネレータか。
歴戦の勇者達なら、圧縮された exe ファイルを解凍して元の exe に戻すツールくらいは持っていると思う。
ああ、パソコン通信の海に放流した exe 解凍ツールは生きているのだろうか?
圧縮ツール: 放流した解凍ツールpkexe: pkdec (これはもしかしたら手元に置いてあるだけかも)diet: eat (*1)lzexe: lzeeexepack: unexep
(*1) diet 自身で解凍できる。オーバーレイ部分があると失敗するので作ったツール。
DOS時代だと、バイナリーを付け足し編集して条件分岐でジャンプ先を変えるなどとという、ウィルスと作り的に同じ可能性もあり得るので。。。
ここまでくるとマシン語書いてるようなもんですね。。
Cのint86()関数って確かスタックに命令コードを生成して呼び出してた記憶がある。実際そうでもしないとやりようが無いからね。
256種類を展開すれば生成しないでも可能だけど。
桁一個か二個足りないというコメント有りましたが、その通りなんだと思いますよ。
♯ツール類使用禁止の臭いはある。。。
しかし1000万から2000万で募集してたら、それはそれで別の騒ぎになってただろう
ドットインパクトプリンターだと、自前でタイミング取りながら直接制御コード叩いてる可能性もあります。。じゃないとデータ飛ぶ(ォィ)からwまあ、21世紀成る前に新しいのに更新される前提で作られたモノでしょう。
割り込みで作るのが面倒なのでとりあえずベタで書いたら問題なく動いてそのままは作った事ありますねえ。
単純なコマンドラインのツールでも機種共用ライブラリなんかを使ってると何の為にあるのかわからないコードだらけに見えるかな。W2K上で動かすと機種判別部で存在しないメモリ読もうとして落ちるとか。Windows上かの判別をしてWindows用実行ファイルも用意してあるのにそこで落ちてNT系に対応できてなかったなんてのもw
>Windows上かの判別をしてWindows用実行ファイルも用意してあるのにそこで落ちてNT系に>対応できてなかったなんてのもwWin3.x用のアプリをWin95/98で動かした際にバージョン4.xをNT4と勘違いして跳ね飛ばすとかあったっけなぁ
事務員さんが太郎ちゃんで作ったサンプルどおりに(こちらはページプリンタ出力)、N88+ドットインパクトで作れって言われた時を思い出す...
漢字はJISコードに変換してIN-OUTで挟んで出力、はデフォとして。CRだけ送って下線、半改行コードを駆使して罫線、行末まで空白を送ってCRの位置ズレ防止などなど...地獄だったなぁ...その後、誰が保守したんだろう。今見ればCHR$だらけのソースは暗号文と同じ。
※出力遅い!うるさい!って文句言われたし...
下手すると誤差やバグや初期化されていないメモリに依存していたりするのでプログラム自体の解析だけでは駄目かもしれません
そのあたりは現状動作しているのでそこからある程度は追えるんじゃないかな。あとコンパイラ(ライブラリ)のバグを利用した技とかもありますしね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー
要件は、既存プログラムの動作仕様解明まで (スコア:2)
要件が、再度コードを作るプログラムを作成するということならば
開発費用までほしいところですが、
既存プログラムの動作仕様解明までのようですし現状動作している
ようですのでそうは難しくないのではないかと想像します。
Re:要件は、既存プログラムの動作仕様解明まで (スコア:1)
そう思ってチャレンジしたものの諦めた方がすでにいる模様。
モデレータは基本役立たずなの気にしてないよ
Re:要件は、既存プログラムの動作仕様解明まで (スコア:2)
どういう人たちかわかりませんけど、PC9801のEXEプログラムを解析して
メモリーアロケーションを解析したり逆アセンブルして開発言語を特定し
動作を追う経験があった人かどうかですね。
それをやったことない人には開発技術があるってだけでは難しいんじゃ
ないかとは思います。
Re:要件は、既存プログラムの動作仕様解明まで (スコア:2)
特定のインパクトプリンタ制御するなら,MASMあたりでゴリゴリ書いてあるような。
昔のは規模が小さければアセンブラで書いちゃった方が早かったですからねえ。メンテ性はすげえ悪いけど。
Re: (スコア:0)
どのみちプリンタの制御コードの部分は読みにくいですからね。
Re:要件は、既存プログラムの動作仕様解明まで (スコア:2)
MS-DOSの頃は高校生レベルの知識でシステム全体をコントロール可能だったんで,
いろいろ夢がありましたよね。
Re: (スコア:0)
MSXやX68Kなんかだと、ソフトだけでなく増設メモリとかの拡張カード作ったりとか、いろいろやってる人がいましたよね。
MSXはPC98とかと比べると安価だったので、ハードウェアでも手を出しやすかったのもあると思います。
Re: (スコア:0)
逆アセンブルして開発言語を特定
実行ファイル中に文字列として
> Turbo-C - Copyright (c) 1988 Borland Intl.
とか
> MS Run-Time Library - Copyright (c) 1988, Microsoft Corp
とかあったりすることもあるのでまずはそっからでそ。
Re:要件は、既存プログラムの動作仕様解明まで (スコア:2)
開発言語を特定したいのは付着したライブラリ部分を特定したいからです。
開発言語がなんとなくわかると固定したライブラリ部分がたぶん存在すると
思うのでプログラムが大きくても解析は楽になるはずです。
はずというのは実際見ないとわかんない。
Re:要件は、既存プログラムの動作仕様解明まで (スコア:1)
某氏の日記によると [srad.jp]、6月頃にランサーズで同一と思われる案件の募集がされていて、N88-BASICらしい。なんでそんな重要な情報落とすかな。いや素人だから何が重要なのかも理解できていないのか。納期が最短半月とかクレイジーな設定の割に8月になってしれっと再募集かけているあたりも、単にかかりそうな期間が理解できていない感じだし。
Re: (スコア:0)
なんでそんな重要な情報落とすかな。
情報として不確かだからでは?
Re: (スコア:0)
その頃だとTurbo-Pascalもあるかもしれませんね。
あれはP-codeじゃなくてnativeコード吐くんでしたっけ?
Re:要件は、既存プログラムの動作仕様解明まで (スコア:2)
所謂DOS BASICのコンパイラを使ったとかも。
プリンタ操作周りが容易そうだし。
Re: (スコア:0)
DOS BasicといってもNEC製のコンパイラはランタイム環境が必須なので特定できるんで違うだろうなあ。
98ハードウェアに特化したBasicコンパイラってあったっけ? QuickBasicとかTurbo-Basicは違うしな。
Re: (スコア:0)
Re: (スコア:0)
basicだとしたら、ランタイムも一緒にFDに入ってるんじゃない?
200kb程度ですし。
まぁ、あの時代、BASICから初めて、速度の為にBASICのマシン語モニタでマシン語制御→
最後はwinfmやらfilmtnやらに内蔵のバイナリエディタでマシン語バイナリ直書きでcomやらexe作成とかアレゲな人がいた時代なので。。。。
Re:要件は、既存プログラムの動作仕様解明まで (スコア:2)
アセンブラからCに移るとCってすげえ便利ね,となるのよね。
私もファミリーベーシックの時はPEEKとPOKEをよく使ってましたね。
にしてもこの手の話題になるとイキイキしてくるジジイ具合よ。
Re: (スコア:0)
バイナリエディタで.COMファイル作成は分かるが
.EXEファイルはちょっと盛ってないか?w
Re: (スコア:0)
64bytesのEXEなら先日バイナリエディタで直接作成しました。終了するだけの単なるstubですが。
Re: (スコア:0)
>.EXEファイルはちょっと盛ってないか?w
がんばればできるかもしれませんが、がんばっちゃうだけで実用的ではないですね。
Re: (スコア:0)
Cなんて死ねばいいのに(意訳)と言われて反発したくなるのはその頃の記憶があるからなんだろうね。でもそういうのを老害っていうんだよ。
Re: (スコア:0)
まだあるっぽいぞ
http://www.dennougumi.co.jp/products/basic98/ver5/index.html [dennougumi.co.jp]
Re:要件は、既存プログラムの動作仕様解明まで (スコア:2)
Re: (スコア:0)
おい、老害
Re:要件は、既存プログラムの動作仕様解明まで (スコア:1)
ネイティブコードですよ。intel 486の頃はDelphoiのObject-Pascalもあったはずです。サブルーチンコールの形式がCとは違うので、区別つきます。
Re: (スコア:0)
> その頃だとTurbo-Pascalもあるかもしれませんね。
手許の 3.02 で生成された実行ファイルを確認したら
> Copyright (C) 1985 BORLAND Inc
7.0 で生成された実行ファイルを確認したら
> Portions Copyright (c) 1983,92 Borland3
という文字列が埋め込まれてた。
社名と年代が分かれば処理系を調べる手がかりとしては良いところでは。
Re: (スコア:0)
開発言語不明というのが引っかかるな。今時なら適当な hex dump tool とか strings で簡単に分かるはずなのに不明なのだから、圧縮か暗号化してあるのかも。
言い回しからして、何かのキージェネレータか。
歴戦の勇者達なら、圧縮された exe ファイルを解凍して元の exe に戻すツールくらいは持っていると思う。
ああ、パソコン通信の海に放流した exe 解凍ツールは生きているのだろうか?
圧縮ツール: 放流した解凍ツール
pkexe: pkdec (これはもしかしたら手元に置いてあるだけかも)
diet: eat (*1)
lzexe: lzee
exepack: unexep
(*1) diet 自身で解凍できる。オーバーレイ部分があると失敗するので作ったツール。
Re: (スコア:0)
DOS時代だと、バイナリーを付け足し編集して条件分岐でジャンプ先を変えるなどとという、ウィルスと作り的に同じ可能性もあり得るので。。。
ここまでくるとマシン語書いてるようなもんですね。。
Re: (スコア:0)
Cのint86()関数って確かスタックに命令コードを生成して呼び出してた記憶がある。
実際そうでもしないとやりようが無いからね。
256種類を展開すれば生成しないでも可能だけど。
Re: (スコア:0)
桁一個か二個足りないというコメント有りましたが、その通りなんだと思いますよ。
♯ツール類使用禁止の臭いはある。。。
Re: (スコア:0)
しかし1000万から2000万で募集してたら、
それはそれで別の騒ぎになってただろう
Re: (スコア:0)
ドットインパクトプリンターだと、自前でタイミング取りながら直接制御コード叩いてる可能性もあります。。
じゃないとデータ飛ぶ(ォィ)からw
まあ、21世紀成る前に新しいのに更新される前提で作られたモノでしょう。
Re: (スコア:0)
割り込みで作るのが面倒なのでとりあえずベタで書いたら問題なく動いてそのままは
作った事ありますねえ。
単純なコマンドラインのツールでも機種共用ライブラリなんかを使ってると
何の為にあるのかわからないコードだらけに見えるかな。
W2K上で動かすと機種判別部で存在しないメモリ読もうとして落ちるとか。
Windows上かの判別をしてWindows用実行ファイルも用意してあるのにそこで落ちてNT系に
対応できてなかったなんてのもw
Re: (スコア:0)
>Windows上かの判別をしてWindows用実行ファイルも用意してあるのにそこで落ちてNT系に
>対応できてなかったなんてのもw
Win3.x用のアプリをWin95/98で動かした際にバージョン4.xをNT4と勘違いして跳ね飛ばすとかあったっけなぁ
Re: (スコア:0)
事務員さんが太郎ちゃんで作ったサンプルどおりに(こちらはページプリンタ出力)、
N88+ドットインパクトで作れって言われた時を思い出す...
漢字はJISコードに変換してIN-OUTで挟んで出力、はデフォとして。
CRだけ送って下線、半改行コードを駆使して罫線、行末まで空白を送ってCRの位置ズレ防止などなど...
地獄だったなぁ...その後、誰が保守したんだろう。今見ればCHR$だらけのソースは暗号文と同じ。
※出力遅い!うるさい!って文句言われたし...
Re: (スコア:0)
下手すると誤差やバグや初期化されていないメモリに依存していたりするのでプログラム自体の解析だけでは駄目かもしれません
Re:要件は、既存プログラムの動作仕様解明まで (スコア:2)
そのあたりは現状動作しているのでそこからある程度は追えるんじゃないかな。
あとコンパイラ(ライブラリ)のバグを利用した技とかもありますしね。