はてなキーワード: printfとは
(追記)
ttps://agk.saloon.jp/how-to-jp-series
結論をいうと対象のソフトが下記を満たすかどうかで難易度がかなり変わる。
1. 表示テキストが外部ファイルになっている or exe内部のリソースファイルから読み取られる ↔ プログラム埋め込み
2. 内部のテキストエンコード方式がUTF-8 or 16 or 32 ↔ ASCIIなど
3. フォントはシステムにあるのが使われる ↔ 外部ファイルになった画像フォントが使われる
すべてのソースが公開されていない限り、この条件を満たさないものは基本的に日本語にできない。
例えば、自分でC言語でprintfだけのHello world!プログラムを作ってみて、それをソース無しで、外からテキストを変更できるかためしてみればいい。
これは1に反するから多分簡単には出来ない。よしんば出来たとしても、Hello world!より文字数が多いテキストに変えるのはそれなりに面倒である。
こういう表示をさせるやり方としてはprintfに渡すデータを実行時にすげ替えればいい。具体的にはprintfの直前で別の箇所にジャンプさせて引数のレジスタに書き換えたいアドレスを渡して、またprintfまで戻ってくればいい。
これ以上に面倒なのが、2と3が合わさったもので、欧米はアルファベットしか使わないため、ソフトの内部コードがASCIIやCP12XXだったりする。さらにそのソフトに用意されているフォントの文字はその範囲しか存在しない。これらはどう頑張っても普通には日本語を表示することは出来ないので、かなり強引に改造するしか無い。俗に中華パッチと呼ばれているものがそれである。
具体的にはソフトのどこかで、表示させるテキスト配列から文字を1文字取得、1文字からコードポイントに変換、フォントファイルからそのコードポイントのグリフデータを取得、グリフデータを画面に表示させる処理があるため、そこに割り込む。1バイト取得している箇所を2,3バイト一気に取得して、それをなんとかしてコードポイントにして、そのコードポイントをグリフ取得の処理に回せばいい。
for(int i=0;i<0;++i){//<<ここ重要 0回実行 これを覚えておけば だいたいなんとかなる
}
for(int i=0;i<1;++i){//<<ここ重要 1回実行 これを覚えておけば だいたいなんとかなる
}
たすけてね☆ このままだと ころされちゃう あいてにそんなつもりがなくても
あいてがやることは はなしかけるだけ ただし 不用意なタイミングで 何年も
それだけで 殺せるかの 実験でも しているんだろう
そんなものをうけたつもりはないし 顔合わせもしていない
また、そういう事故とまちがえられないよう 最近はAKBのイベントなども すべて自粛しているこ
困りぬいた人に
こっちが 入院になった
そういうことしかない
国に助けてもらいたい だれもいないから 天涯孤独 それもだめなら どこがいいか?
周囲の人からは理由は特にないけど なぜか いじめられることはおおい
っておもしろい
いままで、誰かの準備を食ってきたからかんたんだったんじゃない?
よく食われるからそうおもう
くうこと(きがつかずにもらっちゃう)もあるけどね
わからない
いまのたんとうが過去の中ではけっこういい
はなしかけられる ということがどれだけ苦痛を伴うかは だいぶまえから知ってる
がいきちの話を聞くのは苦痛だろう
それがわかるから、なるべくしないようにしている
でも限界なんだ
ここにひたすらかいていると すこしだけおちつく。
基本書き込んでいる間はプログラムを組んでいることが大多数
またさぎょう。
ずっといえだから、気がつくと寝ている。
あさおきると作業再開
ひたすら作業
みーんななくなっちゃうね
あそぶまえに とられて おわる まぁ コロナはしょうがないけど
としくったなぁとおもった
*調子に乗るな!って
ヒット作もない
簡単にクビになる
いらねー人材
そんなもん、じぶんが、いちばんよくしってる
いっしょけんめいがんばって
ねたみ そねみ 誹謗中傷はやまもど
ちょうしになどのれない
いじめられこそすれ いいことなどないのは自分が一番良く知っている。
くつなめましょうか?
血反吐は吐いてないけど
苦労して、苦労して つくってる
そうだろうなとおもう
あいての言い分を聞いて それこそ おれが 死んでりゃよかったんだろうなと思った
せめても がんばったから
がんばったといっただけだけど
ちょうしにのるな というのなら のらないし 乗る理由など無い
イラッとしたからAKBのCDでも買って送りつけてやりたい もちろん持ってるやつを
あとでいく
#include <iostream> #include <stdio.h> int main(int argc,char *argv[]){ for(int i=0;i<3;++i){ int j = i; printf("Hello world%d92;r92;n",j); } for(int i=0;i<0;++i){ printf("Hello again92;r92;n"); } return 0; };
それで十分だった
がんばったんだ。貯金500万
あっというまに、なくなっちゃった。
もう戻らない僕の幸せ
呪われていて
親が転校してくれたけど
だめだった ばかだったんだ
がんばっても だめなら
それはそれでいい