トップページ⇒tech
21コメント4KB

アンチデバッグ処理って?

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
どういう仕組みなんでしょう?
86系のアセンブラです。
0002デフォルトの名無しさんNGNG
(゚Д゚)ハァ?

あんちでばっぐしょり…って、なに?
ハクられにくくすること?
0003デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
デバックの逆?
バグをつくりだすのか?
0004デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
stripのことか?
0005デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
これからここは(゚Д゚)ハァ? スレになりました。
0006デフォルトの名無しさんNGNG
デバッガーでデバッグできないようなアセンブリコードにしましょう。
そうするとアセンブリ読めない人にはブラックボックスです。
ポリモーフィックとアンチデバッグは基本です。
0007デフォルトの名無しさんNGNG
先頭から逆アセンブルするとおかしくなるの?
0008デフォルトの名無しさんNGNG
ようするにVCとかのデバッガーで解析できなきゃいいんだろう?
0009デフォルトの名無しさんNGNG
DOS時代のint03hいれとくやつとかかな?
0010デフォルトの名無しさんNGNG
コードモーフィング技術って自分自身を書き換えるやつかと思いました。
ビルゲイツが得意かもしれません。
0011デフォルトの名無しさんNGNG
ある処理に規定以上の時間がかかっていたらトレース実行されていると
判断する・・・とかもあったな
何か関数を呼び出すときに、ラッパーを5段くらいかませてデバッガで見てる
人間のやる気を無くさせる(笑 とかもありかな
0012デフォルトの名無しさんNGNG
あとは実行ファイルを幾度となく圧縮して実行時に展開する方式を使うとか。
1度だけでなく何度もやるのがいい。
GetRightでもやってたっけ。
0013デフォルトの名無しさんNGNG
一番基本的なのは、レジスタの操作です。
0014デフォルトの名無しさんNGNG
改変されないように、自分自身に CRC チェックを
するとか聞いたことがある。
0015デフォルトの名無しさんNGNG
以前、こんな感じの処理を挟んでいるソフトがあった。
デバッガ上で動かしていると、ここを通過出来ず強制終了する。

int flag=1;
__try {
 __try {
  DebugBreak();
 } __except (GetExceptionCode() == STATUS_BREAKPOINT) {
  flag=0;
 }
} __finally {
 if (flag) exit(0);
}
0016デフォルトの名無しさんNGNG
面白いあげ
0017トリッキーの1NGNG
コードを動的に動かすってのはどうでしょう?
頻繁にやればブレークポイントが仕掛けられなくなり、はまります。
でもCだと関数のコードを取得することが出来ないから無理かな?
0018デフォルトの名無しさんNGNG
xor eax,eax
push eax
call @1
db 'hehehe',0
@1:
call @2
db 'hahaha',0
@2:
push eax
call MessageBoxA

こんなんどう?
0019うんこNGNG
>18
むかしのユニバーサル(現アルゼ)のパチスロがそんなことやっていたな。

呼び出し側

  ...
  ...
  RST 08H
  DB 00H
  ...
  ...

呼ばれる側

  ORG 08H
  EX (SP), HL
  INC HL
  EX (SP), HL
  RET

みたいな。。。うろ覚え。。。(要は頭から一気に逆汗できなくしている)

余談ですが、現在は、このようなコードを書くと検定に通りません。
0020デフォルトの名無しさんNGNG
単純だけど、逆汗するの面倒だね。
0021デフォルトの名無しさんNGNG
>>19
その呼び出し側は、システムコールでよくあるパターンだよね?
今時の逆汗んブラなら、逆汗できると思われ
■ このスレッドは過去ログ倉庫に格納されています