HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
1121
名無しHSPのソースコードの難読化7未解決


名無し

リンク

2019/11/21(Thu) 06:42:40|NO.88890

ソースコードの難読化について技術的に知りたいです。
・元となるコード

pos 10, 10 mes "HELLO WORLD!"
↓難読化(実行できます)

_0x0000 = 0x0000002c, 0x00000024:foreach _0x0000:_0x0001(cnt) = cnvwtos( _0x0000(cnt) ):loop:_0x0002 = "0x48,0x45,0x4c,0x4c,0x4f,0x20,0x57,0x4f,0x52,0x4c,0x44,0x21":_0x0005 = "":split _0x0002, _0x0001, _0x0003:foreach _0x0003:strrep _0x0003(cnt), "0x", "":_0x0004 = int( _0x0001( 0x00000001 ) + _0x0003(cnt) ):_0x0005 = _0x0005 + cnvwtos( _0x0004 ):loop:pos 10, 10:mes _0x0005:stop

自分的には以下のようなものを実装したいです。
・変数、関数の名前の置換
・文字列型の変数の内容を取得

↓「HELLO WORLD!」を変換 平仮名未対応...

code = "HELLO WORLD!" l = strlen(code) d = "" repeat l cnvstow o, strmid( code, cnt, 1 ) d = d + "0x" + strf( "%x", o ) if ( ( l - 1 ) > cnt ) { d = d + "," } await 0 loop cov = {" _0x0000 = 0x0000002c, 0x00000024 foreach _0x0000 _0x0001(cnt) = cnvwtos( _0x0000(cnt) ) loop _0x0002 = ""} + d + {"" _0x0005 = "" split _0x0002, _0x0001, _0x0003 foreach _0x0003 strrep _0x0003(cnt), "0x", "" _0x0004 = int( _0x0001( 0x00000001 ) + _0x0003(cnt) ) _0x0005 = _0x0005 + cnvwtos( _0x0004 ) loop pos 10, 10 mes _0x0005 stop "} strrep cov, "\n", ":" pos 0, 0 mesbox cov, 640, 480, 0 stop

RegExp(HSP版)をマスターすれば実現できる可能性は微レ存...?
文字を一個一個解析するのは面倒くさくて、長いと時間かかりますしおすし...
参考とかになる物はないですかね。ひたすら文字列関数と睨めっこすればいけますけどね。



この記事に返信する


名無し

リンク

2019/11/21(Thu) 06:44:24|NO.88891

レイアウトが崩れてしまった...申し訳ございません。



MillkeyStars

リンク

2019/11/21(Thu) 13:24:35|NO.88892

初めからキツイこと言うが、スクリプト自体は公開しない事が一番の難読化だと思うよ。
公開しないといけない状況での難読化であれば、長い一行の所みたいな方法でしかない。
(難読化させるソフトが必要だけどね。メンテナンスが自身でもできなくなるので。)

問題は、読まれても大変すぎて諦めるように仕向けるしかないと思う。
(どんなソフトも、最終的に機械が読める形式に変換されるので読まれる前提じゃないとキリがないです。)

スクリプトを実行ファイルにした時に難読化させるとかなら、#epack を検討してください。



名無し

リンク

2019/11/21(Thu) 15:18:39|NO.88893

>初めからキツイこと言うが、スクリプト自体は公開しない事が一番の難読化だと思うよ。
>公開しないといけない状況での難読化であれば、長い一行の所みたいな方法でしかない。
>(難読化させるソフトが必要だけどね。メンテナンスが自身でもできなくなるので。)
まさか返信一件目でその答えがでるとは...予測はしていたんですけどね。
友だちに「このコードexecuteできるんよ!」というトリック的な感じを前提に話しを進めていきます。
技術的に知りたい。技術的にね。ついでに文字列関数もちょちょっと学んで一石二鳥。

というわけで申し訳ないですけど スクリプト自体は公開しない ←これはNGアンサーということで:-:
目標はax解析ソフトでも結局難読化になっちゃうコードの自動生成かな。 Obfuscator.io 的なやつ



tds12

リンク

2019/11/23(Sat) 12:14:05|NO.88909

HSPのAXファイルからコードセグメントを抜き出してHSPのint配列に入れてその配列の先頭アドレスvarptrをラベル型変数にlpokeで書き込んでgotoすると既存ツールでは逆コンパイルできなくなる気がする。



u

リンク

2019/12/16(Mon) 22:11:02|NO.89070

パラメーターに誤りを入れて隠蔽とか?



Velgail

リンク

2019/12/17(Tue) 01:14:37|NO.89071

>友だちに「このコードexecuteできるんよ!」というトリック的な感じ

それはもはやIOCCC(The International Obfuscated C Code Contest
(国際難読化Cコードコンテスト))のようなナニカですね。

原点のCですがソースコードのアスキーアート化とか
https://qiita.com/coord-e/items/78fb116aa40ac4e9579b
こういった「難読化」のほうが相応かもしれませんね。
(仕組みはともかく、生成されたコードに注目してください)



名無し

リンク

2019/12/17(Tue) 06:50:31|NO.89072

>tbs12さん
axファイルを解析すればいいんか。
面白そう。情報ありがとうございます。

>uさん
もっと具体的に教えてほしい。
どうゆう誤りで隠蔽するのかを。
ただ、これも面白そう。

>Velgailさん
プログラムで美術を作る。ファニーな難読化だな。
こういうのも見せたら、面白そう。
ありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.