のんびりした人の日記 -7ページ目

のんびりした人の日記

仕事の愚痴とアニメ関連のことを書いていきます。

苦しいです。毎度。

今回もヘンなコードで悩まされています。

「たのしいバイナリ」のあるコードの一部分なのですが、

unsigned long get_sp(void)
{
__asm__("movl %esp,%eax);

}

ん??

「この関数おかしくね?」とまだまだ初心者である私は思うわけです。

「戻り値の型がunsigned longなのにこの関数から呼び出し元に戻される値がない。というかreturn文がない」

案の定、コンパイルしようと思ったらエラーが出ましたね。

  warning: control reaches end of non-void function [-Wreturn-type]
}
^
明らかに「return文書いて戻り値を設定しろ」ってことですよね。

しかし、この関数の戻り値に何を設定すればいいのか。。。。。

この関数を使っているのがほかのサブルーチンの「int cpy(char *str)」という関数の中で、

printf("0x%08lx",get_sp() + 0x10);

という風に使われているんですよね。





……というかなんかこのままで本では話が進んで行ってるw

エラー出たままでいいってというのもなんだかしっくりこないけど、こんなもんなのかねぇ。。。
最近CTFに興味を持ち始め、リバースエンジニアリングの勉強とか暗号の勉強とかしてます。就活そっちのけで。

まぁ、就活はそのうち終わるでしょ。たぶんww

んで、なんでCTFに興味を持ったのかというと、
    まずはFE試験のセキュリティの部分を勉強をしていてマルウェアとかそこらへんに興味を持ったこと
    大学でセキュリティの講演会があって、それに行ってProcess ExplorerやTCPviewerなどのツールの使い方や異常な状況がどのような状況かを教えてもらって「見つけ方」みたいなことを教えてもらったこと
    高レイヤーのプログラミングはある程度覚えてよくある学習ツールみたいなのの問題解いていたけれど、低レイヤーでどのような処理をしているのかを知りたくなり、アセンブリ言語を勉強し始めたら止まらなくなり、いろいろ本を漁り始めてしまったことから

そんなこんなで
    HACKING 美しき策謀 オライリージャパン
    たのしいバイナリ 技術評論社

とか買って勉強してしまったのが最後だねw

そんで、デバッガの使い方だったり、バイナリエディタの使い方だったり、逆アセンブルの仕方とかツールとかをうさみみハリケーンだとか使っていて、ふと「どんな攻撃方法があって、どのように防いだらいいのか」とかを考えた時に、実際にそれを勉強して競えるようなものがないのか調べたらCTFだった。

まだ、日本ではSECCONぐらいしか有名なのは知らないけど、これらか勉強会とかイベントとか増えてくれると嬉しいな。

あとは、もっと日本においてもハッカーの養成を国として支援すべきだし、それこそ東京オリンピックとかでサイバーテロに対処するためには、対抗できる知識と技能をもった人材を育てるべきだと思う。

んで、僕自身もちゃんとした知識と技能を持ったハッカーになりたいと思っていますです。

就職はSEを志望しているけど、単なるSEじゃなくてより高度な知識を身につけたSE(ハッカーとSEって優劣関係あるのかな?)になりたいです。

若干夢を語ってみました。

これを実現できるように、これからもコツコツ勉強していきたいですね。

ではでは。。
ロボット作っちゃいました!!ww
0314


いやぁ~、なんというか、やっちまったなww
正直、就活終わってから作ろうと思っていたのに、就活にやる気が見いだせなくなって、それで暇だぁ~なんて思ってたときに、


そういえばロボット作ってなかったから作ろうかな

なんて思ってしまったが最後ですよ。だが後悔はしていないwwけどこれホント!

そんなわけで、どんな感じで作ったのかを思い出しながら書いていきたいと思います!

まずはパーツの確認ですね。

0308


初めてロボットを作るので、ロボットってこんな感じのパーツで作れるのかぁ、と結構箱を開けた時から感動していました。
ただ、サーボモータの量が多いww全部合わせて12コだったかな。
ほかのロボットもこんな感じなんでしょうか?それともこれより多い感じなのかな?

そんな疑問を感じつつも、一方で「どんな感じで動くんだろう」とエロゲで鍛えた妄想力を発揮して完成して動いている自分のロボットの姿を想像して「ぐふふ」とニヤけたりラジバンダリ(これ古い?)

そんなこんなで、パーツの確認が済んだところで早速組み立てていきます。
・・・とはいっても最初は地道にサーボモータに目印となるシールをはっていく作業です。

0309


結構地味で疲れました。
はったあとは基盤につないで、サーボがちゃんと動くかを確認して、ようやく組み立てです!!

0310


まずは下半身から作っていきました。足首に相当する部分のサーボをネジで止める際に、家にあるドライバーの長さが短くて届かなかったり、あとはグリップの部分がパーツとぶつかって止めづらいところがあったりして大変でした。結局は、長いドライバーを買ってきてそれで止めました。

お次は上半身。まずは腕!

0311


ここはただパーツを合わせて、サーボを組み込んでネジ止めするだけなので問題ありませんでしたが、問題は次。

0312


なんじゃこりゃですよw
上半身、下半身というかすべてのサーボのコードを上半身の胴体部分に押し込める作業でしたが、たぶんこれが一番大変でしたし、かなり時間をかけました。
コードがパーツに挟まってそのままネジを締めてしまって断線、とかそんなのは嫌ですからね。
初めてのロボット作成なので、やっぱちゃんと完成したときには動いてほしいという思いが強かったので、何度もパーツの隙間から「コードはさまってないかな?」ってなかんじでチェックしていました。

ちゃんと上半身にコードが収まったらあとはラストスパート!
とはいっても、コード類などはあまりなく、ネジ止めばっかりだから楽でした。

そんなわけで、完成~~。


0313



かわい~な~!!
いやされるなぁ~!

本当にこれ買ってよかった!いやなことあってもrapiroと戯れていればそんなことも忘れられるし!
初期値の設定とかでなかなかいい感じに設定できなかったりしていろいろ考えたりはしたけど全然苦ではなかった。
むしろ、サーボのことをほとんど知らなかったので、少しずつ調整をしていく中で「プログラムでどのように設定するのか」とか「値を変化させるとサーボがどのように回転するのか」をいろいろ勉強することができました。

初期値の設定は終わったので、今度はteratermを使ってシリアル通信でコマンドをおくって動かしてみようと思います。

僕はクラウドファウンディングのmakuakeというところで出資してリターンとしてもらいましたが、今ではいろんなところで販売されていますね。
正直なところ2体目がほしいですが、そんな金は今のところないので、就職した後に。

頑張ってガンツクみたいに動かしたいな。
もち、コントローラーはタブレットで、ちゃんとコントローラーのプログラムは自作して。
ちゃんとプログラムの勉強はしておこう!

ひさしぶりの日記はこんな感じで。。