<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ほげぐらまの別館 &#187; C,C++</title>
	<atom:link href="http://lain.heavy.jp/lain/category/computer/program/cc/feed" rel="self" type="application/rss+xml" />
	<link>http://lain.heavy.jp/lain</link>
	<description>プログラムに限らずてきとーに、ね？</description>
	<lastBuildDate>Sat, 29 Aug 2015 14:47:38 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.7.41</generator>
	<item>
		<title>リバースエンジニアリングバイブル -コード再創造の美学-</title>
		<link>http://lain.heavy.jp/lain/2013/10/14/760</link>
		<comments>http://lain.heavy.jp/lain/2013/10/14/760#comments</comments>
		<pubDate>Mon, 14 Oct 2013 08:22:44 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[C,C++]]></category>
		<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>
		<category><![CDATA[レビュー]]></category>
		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/2013/10/14/760</guid>
		<description><![CDATA[名前からして普通にお目にかかれないタイプであると思った書籍です。つい先日発売されたばかりで、行きつけの本屋でかるーく眺めてみて購入しました。 リバースエンジニアリングバイブル ~コード再創造の美学~姜 秉卓 &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>名前からして普通にお目にかかれないタイプであると思った書籍です。つい先日発売されたばかりで、行きつけの本屋でかるーく眺めてみて購入しました。</p>
<div id="scid:81867AAF-BB02-476b-AE5D-12BDAC2E750D:abe31a29-c308-4ddd-aaaf-8b7e683fdf19" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844334794/cagylogic-22/ref=nosim" target="_blank"><img alt="リバースエンジニアリングバイブル ~コード再創造の美学~" src="http://ecx.images-amazon.com/images/I/61pgvkPNzxL._SL160_.jpg"/><br />リバースエンジニアリングバイブル ~コード再創造の美学~<br />姜 秉卓 </a></div>
<p>&nbsp;</p>
<p>書籍自体はx86アセンブリ～Win32 PE形式をターゲットに進んでいますが、Linux形式で使われているELF形式でも基礎知識に関してはある程度使えるかと思います。というのも、私のかつての専門がWin32であったのでELFに関する知識はあまりないのです。と言っても、Brewブートローダーを触る際には知らずにはいられないので2chで公開されていたブートローダーの中身を見て参考にさせてもらいました程度の知識なのですが。</p>
<p>中身を軽く読んだ感じの所感です。</p>
<ul>
<li>これからリバースエンジニアリングに対する知識を身に着けるにはある程度良い</li>
<li>書籍を読むにあたって「初めて読む8086/386」程度の知識は欲しい</li>
<li>Win32の知識も必要、特にインジェクション周りはPE形式に慣れていないと厳しい (Advanced Windowsが必要？)</li>
<li>カーネル部分に関しては触れていないので、更に混んだ小細工をするには別途知識が必要</li>
<li>リバースエンジニアリングに対する防衛に関しては物足りない気がしますが・・・、どうなのでしょう？</li>
</ul>
<p>&nbsp;</p>
<p>書籍の中で素晴らしいことが書かれていたので部分的に引用します。</p>
<blockquote><p>真面目にコーディングを学んだ優れたプログラマが作成したコードは、むしろリバースエンジニアリングがしやすいという話があり、その裏をかいて、重要な中核のコードは初心者プログラマに任せようという話もよくする。実際にそのように作成したことはないが、多分これは、高度な難読化技術や今まで見てきたどんなダミーコードよりも高度な難読化技術になるかもしれない。(笑)</p>
</blockquote>
<p>これはまさしくその通りだなと。別に<strong>自分のソースコードが美しい！！！</strong>、と絶賛するわけではないですが、自分の書いたソースコードに対してアタックを行うのは非常に容易なことでした。因みに、それで非常に悩んだ挙句に選んだ結論はセキュリティ部分に関しては外部ツールを使うこと。Win32関係では<a href="http://www.aspack.com/asprotect.html">ASProtect</a>辺りが有名なところですが、ASProtectに関してはいろいろ調べると有名すぎてアンパッカーが開発されてしまっていたので、私的に<a href="http://www.obsidium.de/">Obsidium</a>が大好物でした。</p>
<p>そして現在、Win32から離れてWeb系の仕事を行っているわけなのですが・・・、あれはあれで色々厄介ですね。Web(HTTP)の範囲であれば基本的にはクエリ改ざんやURLを直接アタックするなどの間接的なものしか攻撃ができませんので、プログラマがきちんとパラメータの取り扱い方を知っていれば脆弱性はアプリケーションより遥かに少ないはずなのです。が、Webのプログラムが簡易化することで割と<strong>知識の浅いプログラマでも開発自体は行えるために脆弱性を自ら仕込んでいる状態</strong>が結構見受けられます。なんだかネイティブとWebで逆の動きをしているなー、と感じるところではあります。</p>
<p>&nbsp;</p>
<p>既に起こっていると言っても間違いではないスマートフォン(iOS, Android等)へのアタックはより一層激しくなるでしょうし、正しい知識を身に着けないといけないな、と痛感する一冊でした。ただ・・・・ELF形式について書かれた書籍が無いよ。調べれば断片的に情報が出るのですが、流れを把握して知識を得たい・・・というのは甘えなのでしょうね。</p>
<p>&nbsp;</p>
<p>PS1. 当時nProtectが導入されたころにあれが非常に厄介な動作(プロセスを隠したり、昇格関数をブロックしたり・・・)をしてくれたので結局カーネルドライバから処理の割り込みを行ったのですが、今現在どうなっているのでしょうね。スポーツではないですが、前線から離れると途端に知識が劣化してしまうというのが歳月の経過を感じるものです。</p>
<p>PS2. 書籍ではMFCリバーシングに対して触れられていましたが、個人的にはMFCよりVisualBasic6.0で作成されたアプリケーションのコードフックが非常に厄介でした。というのもの、メッセージの扱いが特殊であり、vbdllの塊があってIATをフックしても何故かフックしきれない部分が残ったりと。日本ならまだVB6.0とかで動いているシステムは多そうですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2013/10/14/760/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C言語の罪悪について思うこと</title>
		<link>http://lain.heavy.jp/lain/2011/05/29/98</link>
		<comments>http://lain.heavy.jp/lain/2011/05/29/98#comments</comments>
		<pubDate>Sat, 28 May 2011 17:30:11 +0000</pubDate>
		<dc:creator><![CDATA[st.lain]]></dc:creator>
				<category><![CDATA[C,C++]]></category>
		<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">http://lain.heavy.jp/lain/2011/05/29/98</guid>
		<description><![CDATA[わんくまのR・田中さんの「C死ね」を見てほげぐらまながら思うことを幾つか。 R・田中さんの意見にほぼ(というか、100%ほど)同意です。少なからずC言語でなくてはならない絶対的な理由が無いならあえてC言語を選ぼうとは思い [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>わんくまのR・田中さんの「<a href="http://blogs.wankuma.com/rti/archive/2011/05/25/199237.aspx">C死ね</a>」を見てほげぐらまながら思うことを幾つか。</p>
<ul>
<li>R・田中さんの意見にほぼ(というか、100%ほど)同意です。少なからずC言語でなくてはならない絶対的な理由が無いならあえてC言語を選ぼうとは思いません。特にシステム側面で。</li>
<li>ゲームのプログラム(特にモバイル)で、C/C++言語で書くとiPhone/Androidが共有して書ける、という方も見えます。が、私はあまりその考えに同調はできません(完全否定ではない)。というのも、この辺りはMonoという技術なり抽象レイヤーががんばってくれればいい話なので。うん、でもMonoは主要メンバが一時解雇されたりと揺れているので不安ですが、なんとかがんばって欲しいです。Monoががんばればそれこそ、iPhone/Android/Windows Phone7のロジック共有ができる・・・と思いたいです。</li>
<li>と、書きつつもaetosさんのコメント「COM大好き」には同じく同意。あれはあれで素晴らしい考え方と技術だし、あれがあったからこそ今の技術に大きく繋がっているとも思っています。</li>
<li>おぎわらさんの案内にあるTwitterURLの中にあるコメントに変態コードが乗っていて噴いた！</li>
</ul>
<p><strong>問.</strong> 先週の部活の新入生向けC言語講座でif-else文だったので、せっかくなので講師の二年生に「if文を使はずに、printfで完結して表示内容を分岐する方法わかる?」と質問したところ、二年はおろか三年の正答率もやばかった件とか……。</p>
<p>に対して大抵のプログラマは三項演算子までは思いつくでしょう(思いつかなかったら本気でプログラマたる職業を考え直してね。もちろん、ほげぐらまになれば思いつかなくても問題は無いです)。が・・・・</p>
<pre class="brush: cpp; title: ; notranslate">printf(&quot;誤¥0正&quot;+(a==b)*4); // UTF-8の場合</pre>
<p>これはｗｗっうぇｗｗｗ。まさか、printfに返すポインタそのものを三項演算子で操作するとは・・・・。もちろん、これもプログラマが見ればわかるとは思うのですが、一方でこれを思いつく発想力は私には無いな～。</p>
<p>ネタに使ってみよっと。</p>
]]></content:encoded>
			<wfw:commentRss>http://lain.heavy.jp/lain/2011/05/29/98/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
