トップページ⇒tech
22コメント6KB

ソース書き換え

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
ttp://www5.airnet.ne.jp/kajapon/GBACODE.TXT

GBA-PARのコードを暗号化・復号化するソースコードなんだけど、
誰かコレをBASICのソースに書き換えてくれ…
漏れには無理だ…_| ̄|○
0002デフォルトの名無しさんNGNG
アセンブリはわかるがBASICを知らない。
漏れには無理だ…_| ̄|○
0003デフォルトの名無しさんNGNG
単発なスレですね。
0004デフォルトの名無しさんNGNG
何も考えずオブジェクトファイルにアセンブルしてしまうのはどうだろう?

0005デフォルトの名無しさんNGNG
>>3
否。>1の要件とは無関係に、
これからいろんなバックド(ry
0006デフォルトの名無しさんNGNG
このスレは色々なソースをBASIC以外に
                    ~~~~
書き換えるスレになりました    
0007デフォルトの名無しさんNGNG
なってない(;´Д`)なってない(;´Д`)
0008デフォルトの名無しさんNGNG
Cに直すならまだ納得行くが
なんでBASIC?
0009デフォルトの名無しさんNGNG
VBだろ。どうぜ。
0010デフォルトの名無しさんNGNG
CでもOKだった。言い忘れててスマソ…
ただ、GUIぢゃ駄目なんだ。
0011デフォルトの名無しさんNGNG
Cがわかるんならこの機会に
アセンブラくらいつまんでみてもいいじゃないか?
0012デフォルトの名無しさんNGNG
BASICは任しておけ。でもアセンブラわかんない。
アセンブラ→Cにしてくれたら、C→BASICにしてあげる。
0013おでんNGNG
一箇所だけ・・・間違ってたらごめん

//cryptsub1 address用
//in.edx:data,esi:crypt#
//out.eax:add/sub# for address

unsigned int crypt1(unsigned int data,unsigned int crypt)
{
// mov ebx,edx
// shl ebx,04
// add ebx,009f4fbbdh
unsigned int tmp= (data << 4) + 0x9f4fbbd ;
// mov eax,edx
// add eax,esi
// xor ebx,eax
tmp ^= (data + crypt) ;
// mov eax,edx
// shr eax,05
// add eax,09681884ah
// xor eax,ebx
unsigned int ret= data >> 5 + 0x09681884a ;
ret ^= tmp ;

return ret ;
}
0014デフォルトの名無しさんNGNG
>>13
アリガ�d

しかし、これだけじゃ使えない… orz
0015デフォルトの名無しさんNGNG
そのくらい書き換えできないのなら、無理して使う必要もないのでは?
00161NGNG
やはり、人に頼るのはあまり良くないことだったかな…
とにかく、迷惑掛けてスマンかった。
「ソース書き換え」の用件は撤回するよ。

後は放置するなり、漏れを煽るなり、再利用するなし、好きにしてくれ。
0017デフォルトの名無しさんNGNG
ちなみに、簡単なソースで、コンパイラにアセンブラコード吐き出させて読解すれば、ある程度りかいできるようになるよ。
もちろん、アセンブラのニモニックは覚えなきゃならないが。
0018デフォルトの名無しさんNGNG
>>1
、ェチー、ャコ・・ヘヘ熙タ、サ、陦」・ォ・ケ
0019デフォルトの名無しさんNGNG
>>18
お前の言いたいことはよくわかった。
とにかく今はゆっくりやすめ
0020デフォルトの名無しさんNGNG
/* 1 よ,感謝しとけ.Cでなるべく忠実に再現してやったぞ.
  ただし,CPUが32ビットリトルエンディアンでないとまずい.
*/
unsigned long eax, ebx, ecx, edx, esi, *di;
unsigned long *decrypttable = {
 0x0c6ef3720,0x028b7bd67,0x08a8043ae,0x0ec48c9f5,0x04e11503c,0x0afd9d683,0x011a25cca,0x0736ae311,
 0x0d5336958,0x036fbef9f,0x098c475e6,0x0fa8cfc2d,0x05c558274,0x0be1e08bb,0x01fe68f02,0x081af1549,
 0x0e3779b90,0x0454021d7,0x0a708a81e,0x008d12e65,0x06a99b4ac,0x0cc623af3,0x02e2ac13a,0x08ff34781,
 0x0f1bbcdc8,0x05384540f,0x0b54cda56,0x01715609d,0x078dde6e4,0x0daa66d2b,0x03c6ef372,0x09e3779b9};
void crypt1(void);
void crypt2(void);
void encrypt(void){
 di = &decrypttable[31];
encrypt_loop:
 esi = *di;
 crypt1();
 ecx += eax;
 crypt2();
 edx += eax;
 di--;
 if (di > &decripttable[-1]) goto encrypt_loop;
}
0021デフォルトの名無しさんNGNG
void decrypt(void){
 di = decrpyttable;
decrypt_loop;
 esi = *di;
 crypt2();
 edx -= eax;
 crypt1();
 ecx -= eax;
 di++;
 if (di < &decripttable[32]) goto decrpyt_loop;
}
void crypt1(void){
 ebx = edx;
 ebx <<= 4;
 ebx += 0x9f4fbbd;
 eax = edx;
 eax += esi;
 ebx ^= eax;
 eax = edx;
 eax >>= 5;
 eax += 0x9681884a;
 eax ^= ebx;
}
0022デフォルトの名無しさんNGNG
void crypt2(void){
 ebx = ecx;
 ebx >>= 4;
 ebx += 352027e9;
 eax = ecx;
 eax += esi;
 ebx ^= eax;
 eax = ecx;
 eax >>= 5;
 eax += 0xf3dee5a7;
}
■ このスレッドは過去ログ倉庫に格納されています