
(一部フィクションです)
そんなわけで、実行ファイルのグローバル変数とかが格納されている、.dataセクション、.rdataセクションのエンディアンを変更したい!
perlとかでがんばって書き変えるかめんどくせぇとか思ってたら、
objcopyコマンドで簡単にできてしまったのでメモ
gcc -c test.c -o test.o
objcopy -R .data -R .rdata test.o no-data.o
objcopy -R .text -R .bss --reverse-bytes=4 test.o reversed-data.o
gcc reversed-data.o no-data.o -o test.exe
test.cの内容は次のような感じであります
const char test_data[] = "ABCDEFGHIJKLMN";int main() {
return 0;
}
普通にコンパイルしたのと、エンディアン変換したのの比較をすると次のような具合です

え、このバイナリちゃんと実行できるのかって!?
実行してないからわかんないです!!!
件のハードウェアでは60%くらいは上手くいってます。
今の僕にまじめに検証してる時間と精神力なんてないんです.................... orz .......
.... 関係者の方々本当すんません ..........
トラックバックURL: http://www.lunaport.net/mt/mt-tb.cgi/26
コメントする