はむのブログ Ver.4.8.6 ~= Irregular child

Imaha486の雑記用ブログ。ツイッターもやってます http://twitter.com/Imaha486

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

わーい

2006-12-26 20:14:35 | Weblog
Wiiきたぉ(^ω^)

友人がアマゾンで2台引いたうちの1台をネクロネシア買うことを条件に売ってもらった一品。
って、何なのこのゲーム…('A`;;
道ばた歩いてたら木の上から自分の3倍くらいの大きさのゲジゲジやら毛虫が降ってきますよ?
まさに言葉にならない声というか「うっぐっはっ」というか。
しかもEASY MODEでもありえない難易度の高さ。
これを俺にクリアしろと?('A`)('A`)

とりあえず気分転換にバーチャルコンソールでスーパーマリオやってます。
普段からエミュレータで動かしてても、やっぱWiiでやるというのが良いのですよ。
って、8-4のプクプクにやられた…昔はノーミスで10分切ってたのになぁ。

・・・

とりあえず天気予報と地球儀がかなり便利。
つーか無意味にこれだけで30分くらい楽しめたり。
あと、天気予報はBGMの雰囲気がひじょーーに良い。
今は天気予報の画面のまま放置して部屋のBGMになっております。
和むのぉ~。
コメント
この記事をはてなブックマークに追加

脆弱性(exploit)とは何ぞや

2006-12-24 21:31:58 | Weblog
Panyawoさんのブログ : PSP 2.80のカーネルにアクセスできるExploitが
よくPSPファームの抜け穴うんぬんが話題になりますが、なんでこんなことが起こるのか?
単純に言えばプログラマのミス、まあ変数扱いのバグですな。

例えばこんなコード打っちゃうと激しく穴だらけ。
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
int main(int argc, char* argv[])
{
	char cUserName[8];
	char cPassWord[8];
	char cSuccessFlag=0;
	printf("User name : ");
	gets(cUserName);
	printf("Pass word : ");
	gets(cPassWord);
	// 本来はデータベース照合などが入るが省略
	// 単にユーザhamu パス123のみを認証とする
	if(strcmp(cUserName,"hamu")==0 && strcmp(cPassWord,"123")==0)
		cSuccessFlag=1;
	if(cSuccessFlag!=0)
		printf("Success!n");
	else
		printf("Bad.n");

	printf("nPress any key.n");
	while(!_kbhit());
	return 0;
}
さて、このコードではユーザIDとパスワード認証を行うルーチンで、
本来はユーザhamu、パス123以外のユーザは認証を通らないはずなのですが…。

試しに…
User name : 012345678
Pass word : なし
こんな感じのユーザ名を打つと……Success!が返ります。
(ぱっと見てパスのほうに打てば良いように見えますが、変数配置の問題ですなぁ)。

典型的なバッファオーバーフローの例ですが、配列にパラメータを入れる際、
配列サイズである[8]を超える文字数(012345678の9文字)を入れることで、
後ろにあるcSuccessFlagの変数にまで影響を及ぼしてしまうわけですね。

また、プログラムコードを破壊する目的であれば "瑞"(nop nop)を
ルーチン破壊分打つという手もあります。
それを回避するには文字数チェックやメモリ確保を工夫する必要があるのですが、
非常に巨大なプログラムともなると開発チーム全員にその腕が要求されるため、
一人でも未熟なプログラマが居るとそこを突破されたらアウトです。
またシビアな納期などによりプログラマの余裕を奪ってしまうと、
腕がありながら時間の都合で組めないといったシーンも考えられます。
(PSPはきっとそんな感じなんだろなぁ…)。

外部から値やファイルを渡されて処理するプログラムであれば、
この脆弱性が含まれる可能性があり、ネットワーク系ツールを組む場合、
作る側としてはなかなか怖いものがありますなぁ。
コメント
この記事をはてなブックマークに追加

DeSmuME v0.5.0リリースされました & hasteDSも対応

2006-12-24 11:43:27 | Weblog
SourceForge : DeSmuME

唯一まともに開発が続いているDSエミュレータDeSmuMEの最新版がリリースされました。
今までベータに織り込まれていたサウンドやEEPROMセーブサポートなどが実装されたようですねぇ。
相変わらず3Dレンダリング周りは未実装のようです。

とりあえずhasteDSもそれに合わせて対応完了。
ARDSコードサポートのDipStar正式公開時に同封予定ですが、先行公開で。
hasteDS.exe Ver1.12

ついでに、m3dip.exeをDOSで実行してから窓にNDSファイルをドロップするツワモノがいたので、
それに対応してダブルクリック起動時にファイルパス入力を受け付けるようにしました。
実行後にファイル名を直接入力するか、NDSファイルをドロップしてからENTERキーを押すことで
ARM7ハックパッチを適用できます。
m3dip.exe Ver1.10
コメント
この記事をはてなブックマークに追加

たった1日で返却ですよっと

2006-12-22 23:23:49 | Weblog
なぜか手元にDATELのDSサーチキットがある罠。
あー、こりゃ便利('A`;
たった1日触って返却しないといけないのが寂しいけど、
まあ貴重品らしいので('A`)('A`)

あー、返したくねぇ~~~('A`)

・・・

ついでにサーチしたコードをば。
(アクションリプレイDS用コード)
ニュー・スーパーマリオブラザーズ
@上ボタンを押しながらジャンプ連打で空中浮遊
94000130 FFBF0000
221ae644 00000001
D0000000 00000000

こんなもん逆アセで探そうと思ったら半日かかるけど、
たった数分で絞り込めるから恐ろしい。

・・・さらに追加・・・
ファイナルファンタジーIIIでおもしろげなコード発見。
このくらいならエミュレータでも見つけれたと思うけど、やる気の問題ですのぉ。

@メニュー画面でYボタンを押せばどこでもセーブ
94000136 FFFD0000
0213457C 00000008
D0000000 00000000

クリスタルタワーでリボン装備せずにラスボスに突っ込んでやる気が失せた人用(ぉ
コメント (4)
この記事をはてなブックマークに追加

DipStar ver.061222

2006-12-22 21:10:50 | Weblog
DipStar ver.061222

とりあえずワード判定(5)コード実装。
これで以下みたいなコードもOK。

@ARDS ON + マスターコード
FFFFFFFF 00000001
F200153C E12FFF1E
@上ボタンを押すとスコア99999999
94000130 FFBF0000
020B627C 05F5E0FF
D0000000 00000000
@スコアが99999999の状態で右ボタンを押すとスコア0
94000130 FFEF0000
520B627C 05F5E0FF
020B627C 00000000
D2000000 00000000

そしてひょんなことからARDS仕様書も入手。
16bit not equalコードとかもあったのね…。
この辺は無視して基本だけ実装しようかなと。
コメント (2)
この記事をはてなブックマークに追加

DipStar Ver.061221

2006-12-21 08:25:09 | Weblog
最新を上に書くテスト。
DipStar Ver.061221#2
多段分岐にバグがあったので修正。
ちなみにマスターコードをARM7内で定義しないとX,Y,タッチパネル条件分岐などは使えないので注意。
(そんな奇特なコード見たことないし、あっても別ボタンに割り当てれば良いんだけど)。

--- 以下、午前の更新 ---

DipStar Ver.061221

とりあえずARDSモード実装。
コード先頭行に FFFFFFFF 00000001 で通常のDipStarコード表記がARDS準拠に切り替わります。
ただし、マスターコードが必要である仕様はそのままなので注意。
(しかも実装できているのは0,1,2,9,D0,D2のみ)

直感ヒトフデの場合
@ARDS ON + マスターコード
FFFFFFFF 00000001
F200153C E12FFF1E
@上ボタンを押すとスコア99999999
94000130 FF0000BF
020B627C 05F5E0FF
D0000000 00000000

・・・別件・・・

某所から拾ってきました。ぷりちー。
       , - ―- 、
      '.゛fー== >   
    .___(((( ヽリ))゛、  
    |\ くl li!゜ ヮ゜ノilヽ\  
    |  | ̄ ∪ ̄∪  ̄ |   
    |  |  ぷりちー  |   
   \.|         .|  
       ̄ ̄ ̄ ̄ ̄ ̄
Gooブログで行間いじりかたわかんね('A`)

↓かなっぺのAAワラタwwww
- -
  △   >>1乙だよぅ・・・・
コメント (1)
この記事をはてなブックマークに追加

うにゃうにゃ

2006-12-20 08:23:22 | Weblog
DipStar次期Verのコードの一部。
// 判定バイト9XXXXXXX ... D0000000 00000000
"F9_CODE:¥n"
"cmp r1,#0x90000000 ¥n"
"bcc F2_CODE ¥n"
"and r1,r1,r3 ¥n" // 上4ビット消去ビットマスク
// 9XXXXXXX FF0000YY
"F9_BYTE1:¥n"
"cmp r2,#0xFF000000 ¥n"

うにゃうにゃ
コメント
この記事をはてなブックマークに追加

なんとなくやる気が出てきたので

2006-12-17 18:31:10 | Weblog
DSマジコン用ゲーム改造ツール : DipStar Ver.061217#3

とりあえず数ヶ月ぶりのバージョンアップ。
むしろサーチやメモリダンプをバッサリとカットしたのである意味パワーダウン。
未使用のRボタンをサーチ機能に限定して割り当てようかなとも考えてます。

そもそもメモリダンプを使ってた人のほとんどは自力でプログラムコードで
実装できていたので、全くいらなかったとも言えますが・・・。

機能削った分、消費メモリは「1280+改造コード本数×8バイト+8」だったものが、
一応「864+改造コード本数×8バイト+8」まで減りました。
これで最新バージョンで動かなくなってしまった改造コードが、
再び使えるようになったのではないかなと思われます。

あと、マスターコードアドレス指定位置よりもマイナス方向へのジャンプが
不安定だった問題も修正(できてるはず)。

・・・

うーん、処理をかなり最適化したけど、プログラムエリアを0x350バイト以下まで削ると起動しなくなった。
(コードそのものは0x29Cバイトまで削れた)。
定義領域さえ大きくすれば起動するし、原因がわからんなぁ。

・・・

ひとまず#2にバージョンアップ。
常駐アドレスをVer4.01と同じ0x0237f800に変更し、プログラムエリアを0x354に変更。

・・・

さらに#3にバージョンアップしてプログラムエリアの問題解決。
単純なバグだった('A`;
というわけで消費メモリは「672+改造コード本数×8+4バイト」まで減少。
改造コード1本であれば僅か684バイトの空きがあれば実行できるので、
Ver5.12FFに比べて動くゲームも増えたのではないかなと。
コメント (2)
この記事をはてなブックマークに追加

PS3のシステムソフトウェア修正されたらしい

2006-12-15 22:06:12 | Weblog
SCEI : PLAYSTATION®3システムソフトウェア バージョン 1.31
>PS3™における一部のPlayStation®およびPlayStation®2規格ソフトウェアの動作ステータスを更新しました。
>最新の動作ステータスは専用検索サイトでご確認いただけます。

毎度おなじみの不具合本数列挙ツール使って調べたところ、まだ799本のソフトに問題あり
前回から14本しか改善してませんよ('A`;

曖昧に書かずに、何のソフトを動くようにしたかを書いたほうがいいと思うんだけどなぁ…。
コメント
この記事をはてなブックマークに追加

DipStar最新版

2006-12-15 19:17:47 | Weblog
なかなか作る意欲がでてこなーい('A`)
とりあえず簡易ダンプを無くしてマスターコード定義の「とあるバグ」を
修正しようとは思いつつも、リアルが忙しすぎて駄目ぽ。
(ブログも仕事の合間に打ってたりと、まさに駄目社員)。

後はThumbコードを織り交ぜて消費メモリ減らすくらいかなぁ。
個人的には実機でコード打てるARDS互換機が出てきたら、
DipStarは要らないとか思ったりして。
コメント
この記事をはてなブックマークに追加