Cisco Japan Blog
Share

Dynamic Data Resolver:バージョン 1.0.1 ベータ版


2020年11月9日


Cisco Talos は本日、Dynamic Data Resolver(DDR) ベータ版の新バージョンをリリースしました。今回のバージョンでは、マルチスレッドを使用するサンプル向けの新しいアーキテクチャが採用されています。プロセスとスレッドのトレース機能も一から完全に再実装されています。

また、いくつかのバグやメモリリークの問題も修正されています。さらに DDR バックエンドの新機能として、リリース版とデバッグ版の 2 種類が提供されています。デバッグ版を使用するとコードの品質とバグの検出精度が向上するため、リリース版の基盤となる DynamoRIO フレームワークで見つからなかったメモリリークなどの軽微な問題を検出するのに役立ちます。インストーラも改良され、新しいバージョンでは Program Files フォルダ内の IDA インストールディレクトリではなく、ユーザごとのプラグインディレクトリに IDA プラグインがインストールされます。また、IDA プラグインだけでなく、必要な依存関係ファイルもスクリプトによりすべて自動的にインストールされるようになっています。

DDR バージョン 1.0.1 ベータ版はこちらpopup_iconからダウンロードできます。

嬉しいお知らせ!DDR が Hexrays IDA Plugin Contest 2020 で優勝

このプラグインのすばらしさを認め、IDA Plugin Contestpopup_iconで最優秀賞に選んでくれた HexRays に感謝の意を表します。シスコは HexRays と IDA のさらなる発展を心より願っています。IDA の発展により、私たちのリバースエンジニアリング作業は毎日少しずつ楽になっていくからです。

DDR 1.01 ベータ版の機能の詳細

インストーラの改善

以前の DDR 関連ブログでも説明したように、今回のバージョンでも DDR のインストールは、DDR サーバ側で DDR_INSTALLER.py を実行することにより開始されます。最新バージョンの IDA では Python 3.8 がサポートされているため、DDR クライアント側でもサーバ側でも 3.8 を使用できます。新しいバージョンではインストーラが改良されているため、IDA プラグイン側を手動でインストールする必要はありません。インストーラを実行すると IDA プラグイン側の Python スクリプトがインストールされ、このスクリプトにより各ユーザのプラグインディレクトリにプラグインがインストールされ、すべての依存関係が修正されます。プラグインのインストール時に管理者としてログインする必要はなくなりました。

 

マルチスレッドサンプルのトレースアーキテクチャの改善

新バージョンの DDR における最大の変更点は、マルチスレッドサンプルのトレースアーキテクチャの改善です。今回のバージョンでは、従来のファイルベースのアプローチから共有メモリオブジェクトのアプローチに移行しています。複数のスレッドやプロセスを開始するサンプルのトレースは複雑になります。基盤となる DynamoRio フレームワークは複数のスレッドとプロセスをサポートしています。DynamoRio のスレッド初期化関数と exit コールバック関数を使用すれば、スレッドの処理は比較的簡単に行えます。その一方で、プロセスの処理はより複雑です。新しいプロセスが開始されるたびに DynamoRio クライアントライブラリ(DDR32/64.dll)の新しいインスタンスが実行されるため、最初のサンプルは実行時に開始されることになります。したがって、グローバル変数などのデータ構造体をプロセス間で共有するのは容易ではありません。異なるトレース機能を同期するには、プロセス間でデータを共有するためのメカニズムが必要です。たとえば、どの命令データをどのトレースファイルに書き込むかなどを決定する必要があります。以前のバージョンではファイルを使用してプロセスとスレッドを追跡していましたが、残念ながら非常に時間がかかる上に、アーキテクチャ面での欠点もありました。たとえば、コード内の特定の場所で、スレッドの exit 関数が最初のプロセスの一つ(すなわちコードトレースの対象となるサンプル)なのか、サブプロセスの exit 関数なのかを把握する必要があります。現在開発中の新機能では、こうしたアーキテクチャ面での問題が改善される予定です。

 

DDR ライブラリのデバッグ版

DDR のデバッグ機能が大幅に強化されました。今回のリリースでは 2 つのバージョンが提供されています。実行速度を重視したリリース版とデバッグ版です。いずれも、ddr32.dllddr64.dll の両方が用意されています。デバッグ版はインストーラディレクトリ 「ddr_installer\install_data\ddr32/64dbg.dll」 に配置されます。デバッグ版は通常の使用には推奨されません。DDR がクラッシュした場合や、予想どおりに動作しない場合のトラブルシューティングにご利用ください。

デバッグ版では大量の追加情報が出力されるため、オーバーヘッドが極端に増えますが、DDR のクラッシュやバグを追跡する際に非常に役立ちます。デバッグ版は WinDbg でのクライアントライブラリ(ddr32/64.dll)のデバッグにも使用できます。問題のデバッグを行うには、こちらのドキュメントpopup_iconの指示に従って Windbg を設定する必要があります。

このドキュメントの説明とは異なり、Talos では Windows 10 の WinDbg バージョン 10.0.19041.1 を使用していますが、これまでのところ問題なく動作しています。DynamoRio のクライアントライブラリ(ddr32/64.dll、別名 DDR)は、DynamoRIO のデバッグ版を使用しなくてもデバッグできます。以下に記載した方法に従えば、DynamoRio フレームワークがデバッグ版かリリース版かにかかわらず、クライアントにデバッガをアタッチできます。ただし、クライアント(ddr32/64dbg.dll)だけはデバッグ版を使用する必要があります。ほとんどの問題は、DDR デバッグ版のコマンドライン出力を確認するだけでデバッグできます。WinDbg を使用した DDR のデバッグ方法について詳しくは、次のセクションをご覧ください。また、この記事の付録に掲載されているデバッグセッションのサンプルもご覧ください。

デバッグ版の ddr32/64.dll の出力詳細レベルは、-d スイッチを使用して制御できます。現時点でサポートされているのは -d 5 のみですが、今後、他の出力詳細レベルもサポートされる予定です。トレース命令ごとに追加情報が出力されるため、使用する際には十分にご注意ください。ほとんどのケースでは、-d パラメータを指定せずにデバッグ版を実行します。

WinDbg を使用して DDR バックエンドをデバッグする方法:

  • WinDbg をインストールします。
  • github から最新バージョンの DynamoRIOpopup_icon をダウンロードし、次の WinDbg スクリプトを入手します。
    Load_symsload_syms64、および load_symsWOW64
    詳細については DynamoRio のデバッグブログをご覧ください。
  • 次のように、アーキテクチャ関連のスクリプトを指定して WinDbg を実行します。

    Win10x64 32 ビットクライアント/サンプルを使用する場合:

    “C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe” -pt 1 -c “$>
    <C:\tools\dev\git\dynamorio\tools\windbg-scripts\load_symsWOW64”

    Win10x64
    64 ビットクライアント/サンプルを使用する場合:

    “C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe” -pt 1 -c “$>
    <C:\tools\dev\DynamoRIO-Windows-8.0.0-1\bin64\load_syms64.txt”

  • 次のように、テストサンプルを指定してクライアントライブラリを起動します。初めて実行する場合は、最もシンプルなサンプル(testsample0)を使用します。テストサンプルは DDR インストールディレクトリに保存されています。

      C:\tools\dev\git\dynamorioX64_dbg\build\bin64\drrun.exe -c
     “C:\tools\dev\git\DynDataResolver\ddr_client\x64\Debug\ddr_stable.dll” -d 5 -c
     “C:\tools\DDRinstall\samples\testsample0_64_dyn.cfg” —
     “C:\tools\DDRinstall\samples\testsample0_64_dyn.exe”

ヒント:サンプル構成ファイル(.cfg)はインストールディレクトリ内のドキュメントディレクトリ(ddr_client_dll_sample_config32/64.txt)に保存されていますが、IDA プラグインを使用すると自動的に構成ファイルが生成されます(デフォルトでは C:\tools\ddr\samples ディレクトリに書き込まれます)。

  • デバッグ版は DLL の開始直後にポップアップメッセージを表示して入力を待機します。この段階で、(DDR ライブラリを含む)サンプルプロセスにデバッガをアタッチできます。メッセージボックスに表示されるヒントを確認してください。
  • デバッガを正しくアタッチできたら、メッセージボックスの [OK] をクリックしてデバッグを開始します。

デバッグのヒント:

dynamorio!safe_read_asm_xxx」関数から返されるアクセス違反は想定内の動作であるため、 WinDbg では無視してかまいません。これらのアクセス違反は、DynamoRio が関数を実装する際に発生します(Try-Except)。デバッガがアタッチされていない場合、これらのアクセス違反は DynamoRio によって内部的に処理されます。WinDbg で以下のようなメッセージが表示された場合は F5 キーを押して続行してください。

WinDbg コンソール:
(1df0.1a28) : Access violation – code c0000005(first chance)
         First chance exceptions are reported before any exception handling.
         This exception may be expected and handled.
         dynamorio!safe_read_asm_pre

これらの関数は DDR で頻繁に使用されるため、この例外は大量に表示される場合があります。この例外は WinDbg でアクセス違反の報告を無効にすることでフィルタリングできます。他の大部分の重大な例外は引き続きデバッガで報告されます。

注意

ベータ版

今回のリリースはベータ版であり、まだ十分にテストされていないことにご注意ください。まだ多くのバグが残っている可能性があります。

AMD CPU のバグ

32 ビットサンプルを 64 ビットマシンで実行する場合、WoW64 アーキテクチャが 32 ビット環境と 64 ビット環境の間で切り替えられると、DDR とは無関係な AMD CPU のバグにより DynamoRio フレームワークがクラッシュします。このバグは既知の問題であり、根本原因もすでに特定されています。この問題を修正した特別版ビルドpopup_iconが DynamoRio チームからリリースされています。新しいインストーラでは、どちらのバージョンをインストールするかを尋ねられます。後から別のバージョンをダウンロードして、元の DynamoRio ディレクトリをダウンロードしたディレクトリで置き換えることもできます。DynamoRIO-Windows-8.0.18547.zip(最新版)を解凍して、古いディレクトリの名前(C:\tools\DDR\DynamoRIO-Windows-8.0.0-1 など)を変更するか、古いディレクトリをバックアップします。新しくダウンロードしたディレクトリを古いディレクトリと同じ名前に変更して、元のディレクトリがあった場所に移動します。

詳細については、こちらpopup_iconをご覧ください。このバグは Ryzen CPU で確認されていますが、他の AMD CPU でも発生する可能性があります。Intel CPU では特に問題は見つかっていません。

最新の DynamoRio ビルトを使用したくない場合は、回避策として、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\<サンプル名.exe>MaxLoaderThreads を 1 に設定します。

一部のウィルス対策ソフトウェアでマルウェアとして検出されるテストサンプル

Microsoft Defender などのウィルス対策ソフトウェアでは、一部のテストサンプルがマルウェアとして検出されますが、テストサンプルに悪意のある機能は含まれていないため、心配には及びません。自身の別のインスタンスを起動する動作などがマルウェアの動作として誤認されているに過ぎません。テストサンプルを実行してもリスクは一切ありません。

付録

「testsample0_64_dyn.exe」の一般的なデバッグセッション出力:

コマンドライン:
C:\tools\dev>C:\tools\dev\git\dynamorioX64_dbg\build\bin64\drrun.exe -c “C:\tools\dev\git\DynDataResolver\ddr_client\x64\Debug\ddr_stable.dll” -c “C:\tools\dev\samples\testsample0_64_dyn_trace.cfg” — “C:\tools\dev\samples\testsample0_64_dyn.exe”

testsample0_64_dyn_trace.cfg:
L 140001000 140003000 20000 na TRUE “C:\tools\dev\samples\out_testsample0_64_dyn_trace1.json”
L 140001000 140003000 20000 na TRUE “C:\tools\dev\samples\out_testsample0_64_dyn_trace2.json”

出力:
<Starting application C:\tools\dev\samples\testsample0_64_dyn.exe (11956)>
<cannot remove dll from rbtree: at root/min + can’t find real tree>
<Running on newer-than-this-build “Microsoft Windows 10-2004 x64″>
<Early threads found>
<Initial options = -no_dynamic_options -client_lib ‘C:\tools\dev\git\DynDataResolver\ddr_client\x64\Debug\ddr_stable.dll;0;”-c” “C:\tools\dev\samples\testsample0_64_dyn_trace.cfg”‘ -client_lib64 ‘C:\tools\dev\git\DynDataResolver\ddr_client\x64\Debug\ddr_stable.dll;0;”-c” “C:\tools\dev\samples\testsample0_64_dyn_trace.cfg”‘ -code_api -probe_api -stack_size 56K -max_elide_jmp 0 -max_elide_call 0 -no_inline_ignored_syscalls -native_exec_default_list ” -no_native_exec_managed_code -no_indcall2direct >
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:112:dr_client_main(): dr_client_main started.

————————————– Debugging Hint ——————————————-
Access violations from ‘dynamorio!safe_read_asm_xxx’ are expected and can be ignored in WinDbg.
They are caused by the way DynamoRio has implemented these functions.
They are handled by DynamoRio internally. Just proceed (F5) if something like below happens:

(1df0.1a28) : Access violation – code c0000005(first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
dynamorio!safe_read_asm_pre
————————————————————————————————

[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:142:dr_client_main(): Start initalizing DynamoRio Client (ddr.dll)
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:294:IncProcCounter(): First instance.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:324:IncProcCounter(): process counter = 1.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:434:getSharedProcessIDs(): Creating ProcessIDs shared memory.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:149:dr_client_main(): Saved PID 11956 in processids + 0
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:490:getSharedProcessNames(): Creating ProcessNames shared memory.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:156:dr_client_main(): Saved Processname testsample0_64_dyn.exe in processnames + 0

[DDR] [INFO] DDR Client DLL x64 version 1.01 beta initializing…
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:548:getSharedLogpath(): Creating Logpath shared memory object.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:580:getSharedLogpath(): [FIRST PROC FIRST THREAD] Using log path C:\tools\dev\samples\.
[DDR] [INFO] DDR Client DLL running from: C:\tools\dev\git\DynDataResolver\ddr_client\x64\Debug
[DDR] [INFO] Reading config from file: C:\tools\dev\samples\testsample0_64_dyn_trace.cfg
[DDR] [INFO] Trying to use trace logfile: C:\tools\dev\samples\out_testsample0_64_dyn_trace1.json
[DDR] [INFO] Done creating logfiles.
[DDR] [INFO] Configuration file closed
[DDR] [INFO] Doing a light trace from 0x0000000140001000 to 0x0000000140003000 logging to C:\tools\dev\samples\out_testsample0_64_dyn_trace1.json
[DDR] [INFO] Doing a light trace from 0x0000000140001000 to 0x0000000140003000 logging to C:\tools\dev\samples\out_testsample0_64_dyn_trace2.json

[DDR] [DEBUG] dr_client_main callbacks set.
[DDR] [INFO] Initalization done.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:251:dr_client_main(): dr_client_main end.

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = testsample0_64_dyn.exe Process ID = 11956 Threat ID = 5184 Thread counter = 1
[DDR] [INFO] New process, first thread started.
[DDR] [DEBUG] [MEMOP] allocated memory for main thread. Memaddr: 0x00007ff638923090 thread_id=5184 process_id=11956
[DDR] [INFO] writing thread info to: C:\tools\dev\samples\\ddr_threads_testsample0_64_dyn.exe_11956.txt
[DDR] [INFO] First thread. Setting main thread id to 5184
[DDR] [INFO] Samplename: C:\tools\dev\samples\testsample0_64_dyn.exe.
[DDR] [INFO] PEB            : 0x00000063d445b000
[DDR] [INFO] PE Imagebase   : 0x00007ff6b88d0000
[DDR] [INFO] PE EP          : 0x00007ff6b88d1724
[DDR] [INFO] File EP        : 0x0000000140001724
[DDR] [INFO] EP diff        : 0x00007ff5788d0000

[DDR] [DEBUG] event_thread_init_trace_instr end.
[DDR] [DEBUG] event_module_load_trace_instr module loaded: dynamorio.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ddr_stable.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: drmgr.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: drwrap.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: testsample0_64_dyn.exe:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: VCRUNTIME140.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ucrtbase.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: KERNELBASE.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: KERNEL32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ntdll.dll:
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
<curiosity: rex.w on OPSZ_6_irex10_short4!>
main: 1. Memory allocated
Main: Buffer 1(@0x00000194B4700000 Size:113): PE12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
main: a is NOT greater 5.
main: a = 0 is NOT greater 5.
myfunc1: a = 2
myfunc2: a = 8
main: 1. a = 8 in main
myfunc1: a = 10
myfunc2: a = 12
myfunc2: a = 18
main: 2. a = 19 in main
main: 2. Memory allocated
main: Buffer 2(@0x00000196B4A30000 Size:116): TEST212345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
main: 1. Release succeeded.
main: 2. Release succeeded.

Main: Good bye…

<Application changing protections of system memory at least once (0x00007fffe8def000-0x00007fffe8df3000)>
[DDR] [DEBUG] event_module_load_trace_instr module loaded: msvcrt.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: RPCRT4.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: AppCore.dll:
<Stopping application C:\tools\dev\samples\testsample0_64_dyn.exe (11956)>

[DDR] [DEBUG] event_thread_exit_trace_instr start.
[DDR] [DEBUG] Thread counter: 1
[DDR] [INFO] Main thread (id = 5184) was terminated.
[DDR] [INFO] Fixing trace file: C:\tools\dev\samples\out_testsample0_64_dyn_trace1.json
[DDR] [INFO] Fixing file: C:\tools\dev\samples\out_testsample0_64_dyn_trace1.json
[DDR] [INFO] Fixed comma at the end of JSON file.
[DDR] [INFO] Opening file: C:\tools\dev\samples\out_testsample0_64_dyn_trace1.json for writing
[DDR] [INFO] Writing fixed buffer to file: C:\tools\dev\samples\out_testsample0_64_dyn_trace1.json
[DDR] [INFO] Done. Final logfile C:\tools\dev\samples\out_testsample0_64_dyn_trace1.json written. Length: 2025692 bytes.
[DDR] [INFO] Trace file fixed.
[DDR] [INFO] Fixing API trace file: C:\tools\dev\samples\out_testsample0_64_dyn_trace1_apicalls.json
[DDR] [INFO] Fixing file: C:\tools\dev\samples\out_testsample0_64_dyn_trace1_apicalls.json
[DDR] [INFO] JSON file is ok, no comma at the end found.
[DDR] [INFO] Opening file: C:\tools\dev\samples\out_testsample0_64_dyn_trace1_apicalls.json for writing
[DDR] [INFO] Writing fixed buffer to file: C:\tools\dev\samples\out_testsample0_64_dyn_trace1_apicalls.json
[DDR] [INFO] Done. Final logfile C:\tools\dev\samples\out_testsample0_64_dyn_trace1_apicalls.json written. Length: 1172678 bytes.
[DDR] [INFO] API trace file fixed.
[DDR] [INFO] Time : 10:01:38:422
[DDR] [DEBUG] [MEMOP] Last living thread (thread_id = 5184 proccess = 11956) reached. Free’ing memory.
[DDR] [DEBUG] [MEMOP] free’ing memory: 0x00007ff638923090 thread_id = 5184
[DDR] [DEBUG] [MEMOP] process memory free’ed.

[DDR] [DEBUG] event_thread_exit_trace_instr end.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:492:event_exit(): event_exit start.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:462:getSharedProcessIDs(): Not the first process.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:518:getSharedProcessNames(): ProcessNames: Not the first process.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:383:DecProcCounter(): Decreased process counter = 0.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:533:event_exit(): This is the last process running. No need to kill anything.
<Failed to suspend attached-but-never-scheduled thread 5832>
<Failed to suspend attached-but-never-scheduled thread 12256>
<Failed to suspend attached-but-never-scheduled thread 9792>

C:\tools\dev>pause
Press any key to continue . . .

「testsample1_64.exe」の一般的なデバッグセッション出力(マルチスレッド/マルチプロセス):

コマンドライン:
C:\tools\dev>C:\tools\dev\git\dynamorioX64_dbg\build\bin64\drrun.exe -c “C:\tools\dev\git\DynDataResolver\ddr_client\x64\Debug\ddr_stable.dll” -c “C:\tools\dev\samples\testsample1_64.cfg” — “C:\tools\dev\samples\testsample1_64.exe”

testsample1_64.cfg:
L 140001000 140003000 20000 na TRUE “C:\tools\dev\samples\out_testsample1_64_trace.json”

出力:
<Starting application C:\tools\dev\samples\testsample1_64.exe (12996)>
<cannot remove dll from rbtree: at root/min + can’t find real tree>
<Running on newer-than-this-build “Microsoft Windows 10-2004 x64″>
<Early threads found>
<Initial options = -no_dynamic_options -client_lib ‘C:\tools\dev\git\DynDataResolver\ddr_client\x64\Debug\ddr_stable.dll;0;”-c” “C:\tools\dev\samples\testsample1_64.cfg”‘ -client_lib64 ‘C:\tools\dev\git\DynDataResolver\ddr_client\x64\Debug\ddr_stable.dll;0;”-c” “C:\tools\dev\samples\testsample1_64.cfg”‘ -code_api -probe_api -stack_size 56K -max_elide_jmp 0 -max_elide_call 0 -no_inline_ignored_syscalls -native_exec_default_list ” -no_native_exec_managed_code -no_indcall2direct >
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:112:dr_client_main(): dr_client_main started.

————————————– Debugging Hint ——————————————-
Access violations from ‘dynamorio!safe_read_asm_xxx’ are expected and can be ignored in WinDbg.
They are caused by the way DynamoRio has implemented these functions.
They are handled by DynamoRio internally. Just proceed (F5) if something like below happens:

(1df0.1a28) : Access violation – code c0000005(first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
dynamorio!safe_read_asm_pre
————————————————————————————————

[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:142:dr_client_main(): Start initializing DynamoRio Client (ddr.dll)
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:294:IncProcCounter(): First instance.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:324:IncProcCounter(): process counter = 1.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:434:getSharedProcessIDs(): Creating ProcessIDs shared memory.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:149:dr_client_main(): Saved PID 12996 in processids + 0
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:490:getSharedProcessNames(): Creating ProcessNames shared memory.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:156:dr_client_main(): Saved Processname testsample1_64.exe in processnames + 0

[DDR] [INFO] DDR Client DLL x64 version 1.01 beta initializing…
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:548:getSharedLogpath(): Creating Logpath shared memory object.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:580:getSharedLogpath(): [FIRST PROC FIRST THREAD] Using log path C:\tools\dev\samples\.
[DDR] [INFO] DDR Client DLL running from: C:\tools\dev\git\DynDataResolver\ddr_client\x64\Debug
[DDR] [INFO] Reading config from file: C:\tools\dev\samples\testsample1_64.cfg
[DDR] [INFO] Trying to use trace logfile: C:\tools\dev\samples\out_testsample1_64_trace.json
[DDR] [INFO] Logfile exists
[DDR] [INFO] Using new trace logfile: C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996.json
[DDR] [INFO] Done creating logfiles.
[DDR] [INFO] Configuration file closed
[DDR] [INFO] Doing a light trace from 0x0000000140001000 to 0x0000000140003000 logging to C:\tools\dev\samples\out_testsample1_64_trace.json

[DDR] [DEBUG] dr_client_main callbacks set.
[DDR] [INFO] Initalization done.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:251:dr_client_main(): dr_client_main end.

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = testsample1_64.exe Process ID = 12996 Threat ID = 4820 Thread counter = 1
[DDR] [INFO] New process, first thread started.
[DDR] [DEBUG] [MEMOP] allocated memory for main thread. Memaddr: 0x00007ff699b22e48 thread_id=4820 process_id=12996
[DDR] [INFO] writing thread info to: C:\tools\dev\samples\\ddr_threads_testsample1_64.exe_12996.txt
[DDR] [INFO] First thread. Setting main thread id to 4820
[DDR] [INFO] Samplename: C:\tools\dev\samples\testsample1_64.exe.
[DDR] [INFO] PEB            : 0x0000006332792000
[DDR] [INFO] PE Imagebase   : 0x00007ff719ad0000
[DDR] [INFO] PE EP          : 0x00007ff719ad1f94
[DDR] [INFO] File EP        : 0x0000000140001f94
[DDR] [INFO] EP diff        : 0x00007ff5d9ad0000

[DDR] [DEBUG] event_thread_init_trace_instr end.
[DDR] [DEBUG] event_module_load_trace_instr module loaded: dynamorio.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ddr_stable.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: drmgr.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: drwrap.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: testsample1_64.exe:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: VCRUNTIME140.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: win32u.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ucrtbase.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: KERNELBASE.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: msvcp_win.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: gdi32full.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: KERNEL32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: GDI32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: USER32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: IMM32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ntdll.dll:
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
<curiosity: rex.w on OPSZ_6_irex10_short4!>
main: 1. Memory allocated
Main: Buffer 1(@0x00000179F0190000 Size:113): PE12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
main: a is NOT greater 5.
<Application changing protections of system memory at least once (0x00007fffe8def000-0x00007fffe8df3000)>
[DDR] [DEBUG] event_module_load_trace_instr module loaded: msvcrt.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: RPCRT4.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: combase.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: UxTheme.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: OLEAUT32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: SECHOST.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: MSCTF.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: AppCore.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: bcryptPrimitives.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: NTMARTA.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: WS2_32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: CoreMessaging.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: WinTypes.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: SHCORE.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ADVAPI32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: CoreUIComponents.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: TextInputFramework.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: TextShaping.dll:

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = testsample1_64.exe Process ID = 12996 Threat ID = 11068 Thread counter = 2
[DDR] [INFO] Existing process. New thread started.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\trace_instr.c:119:event_thread_init_trace_instr(): Using log path C:\tools\dev\samples\
[DDR] [DEBUG] [MEMOP] allocated memory for sub thread. Memaddr: 0x00007ff699b22fd8 thread_id=11068 process_id=12996
[DDR] [WARNING] This is not the first thread. Multithreaded is not supported, but works in many cases.

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = testsample1_64.exe Process ID = 12996 Threat ID = 2492 Thread counter = 3
[DDR] [INFO] Existing process. New thread started.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\trace_instr.c:119:event_thread_init_trace_instr(): Using log path C:\tools\dev\samples\
[DDR] [DEBUG] [MEMOP] allocated memory for sub thread. Memaddr: 0x00007ff699b22f90 thread_id=2492 process_id=12996
[DDR] [WARNING] This is not the first thread. Multithreaded is not supported, but works in many cases.
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ole32.dll:
main: Dialogbox: 0
main: a = 0 is NOT greater 5.
myfunc1: a = 2
myfunc2: a = 8
main: 1. a = 8 in main
myfunc1: a = 10
myfunc2: a = 12
myfunc2: a = 18
main: 2. a = 19 in main
main: 2. Memory allocated
main: Buffer 2(@0x0000017BF1FA0000 Size:116): TEST212345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
main: 1. Release succeeded.
main: 2. Release succeeded.
Main: starting thread 1 ….

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = testsample1_64.exe Process ID = 12996 Threat ID = 11056 Thread counter = 4
[DDR] [INFO] Existing process. New thread started.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\trace_instr.c:119:event_thread_init_trace_instr(): Using log path C:\tools\dev\samples\
Main: Thread 1 started. Waiting for it …
[DDR] [DEBUG] [MEMOP] allocated memory for sub thread. Memaddr: 0x00007ff699b23068 thread_id=11056 process_id=12996
[DDR] [WARNING] This is not the first thread. Multithreaded is not supported, but works in many case.
Threadfunc1: Start of thread function.
T1
T1
T1

Threadfunc1: End of thread function.

[DDR] [DEBUG] event_thread_exit_trace_instr start.
[DDR] [DEBUG] Thread counter: 4
[DDR] [INFO] Thread with id 11056 was terminated

[DDR] [DEBUG] event_thread_exit_trace_instr end.
Main: starting thread 2….
Main: Thread 2 started. Not waiting for it …

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = testsample1_64.exe Process ID = 12996 Threat ID = 708 Thread counter = 4
[DDR] [INFO] Existing process. New thread started.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\trace_instr.c:119:event_thread_init_trace_instr(): Using log path C:\tools\dev\samples\
[DDR] [DEBUG] [MEMOP] allocated memory for sub thread. Memaddr: 0x00007ff699b23020 thread_id=708 process_id=12996
[DDR] [WARNING] This is not the first thread. Multithreaded is not supported, but works in many case.
Threadfunc2: Start of thread function. T2 Main:Process started.Main:Starting thread 3 ….

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = testsample1_64.exe Process ID = 12996 Threat ID = 13228 Thread counter = 5
[DDR] [INFO] Existing process. New thread started.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\trace_instr.c:119:event_thread_init_trace_instr(): Using log path C:\tools\dev\samples\
Main: Thread 3 started.
[DDR] [DEBUG] [MEMOP] allocated memory for sub thread. Memaddr: 0x00007ff699b230b0 thread_id=13228 process_id=12996
[DDR] [WARNING] This is not the first thread. Multithreaded is not supported, but works in many case.
M
Threadfunc3: Start of thread function.
T3
T2
M
T2
T3
M
T2

Main: Good bye…

[DDR] [DEBUG] event_thread_exit_trace_instr start.
[DDR] [DEBUG] Thread counter: 5
[DDR] [INFO] Thread with id 708 was terminated

[DDR] [DEBUG] event_thread_exit_trace_instr end.

[DDR] [DEBUG] event_thread_exit_trace_instr start.
[DDR] [DEBUG] Thread counter: 4
[DDR] [INFO] Thread with id 13228 was terminated

[DDR] [DEBUG] event_thread_exit_trace_instr end.

[DDR] [DEBUG] event_thread_exit_trace_instr start.
[DDR] [DEBUG] Thread counter: 3
[DDR] [INFO] Thread with id 2492 was terminated

[DDR] [DEBUG] event_thread_exit_trace_instr end.

[DDR] [DEBUG] event_thread_exit_trace_instr start.
[DDR] [DEBUG] Thread counter: 2
[DDR] [INFO] Thread with id 11068 was terminated

[DDR] [DEBUG] event_thread_exit_trace_instr end.
<Stopping application C:\tools\dev\samples\testsample1_64.exe (12996)>

[DDR] [DEBUG] event_thread_exit_trace_instr start.
[DDR] [DEBUG] Thread counter: 1
[DDR] [INFO] Main thread (id = 4820) was terminated.
[DDR] [INFO] Fixing trace file: C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996.json
[DDR] [INFO] Fixing file: C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996.json
[DDR] [INFO] Fixed comma at the end of JSON file.
[DDR] [INFO] Opening file: C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996.json for writing
[DDR] [INFO] Writing fixed buffer to file: C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996.json
[DDR] [INFO] Done. Final logfile C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996.json written. Length: 2319302 bytes.
[DDR] [INFO] Trace file fixed.
[DDR] [INFO] Fixing API trace file: C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996_apicalls.json
[DDR] [INFO] Fixing file: C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996_apicalls.json
[DDR] [INFO] JSON file is ok, no comma at the end found.
[DDR] [INFO] Opening file: C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996_apicalls.json for writing
[DDR] [INFO] Writing fixed buffer to file: C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996_apicalls.json
[DDR] [INFO] Done. Final logfile C:\tools\dev\samples\out_testsample1_64_trace_testsample1_64.exe_12996_apicalls.json written. Length: 2218660 bytes.
[DDR] [INFO] API trace file fixed.
[DDR] [INFO] Time : 09:57:19:741
[DDR] [DEBUG] [MEMOP] Last living thread (thread_id = 4820 proccess = 12996) reached. Free’ing memory.
[DDR] [DEBUG] [MEMOP] free’ing memory: 0x00007ff699b22e48 thread_id = 4820
[DDR] [DEBUG] [MEMOP] free’ing memory: 0x00007ff699b22fd8 thread_id = 11068
[DDR] [DEBUG] [MEMOP] free’ing memory: 0x00007ff699b22f90 thread_id = 2492
[DDR] [DEBUG] [MEMOP] free’ing memory: 0x00007ff699b23068 thread_id = 11056
[DDR] [DEBUG] [MEMOP] free’ing memory: 0x00007ff699b23020 thread_id = 708
[DDR] [DEBUG] [MEMOP] free’ing memory: 0x00007ff699b230b0 thread_id = 13228
[DDR] [DEBUG] [MEMOP] process memory free’ed.

[DDR] [DEBUG] event_thread_exit_trace_instr end.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:492:event_exit(): event_exit start.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:462:getSharedProcessIDs(): Not the first process.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:518:getSharedProcessNames(): ProcessNames: Not the first process.

[DDR] [INFO] DDR Client DLL x64 version 1.01 beta initializing…
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:585:getSharedLogpath(): Not the first process.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:600:getSharedLogpath(): [SUB THREAD] Using log path C:\tools\dev\samples\
.[DDR] [INFO] DDR Client DLL running from: C:\tools\dev\git\DynDataResolver\ddr_client\x64\Debug
[DDR] [INFO] Reading config from file: C:\tools\dev\samples\testsample1_64.cfg
[DDR] [INFO] Trying to use trace logfile: C:\tools\dev\samples\out_testsample1_64_trace.json
[DDR] [INFO] Logfile exists
[DDR] [INFO] Using new trace logfile: C:\tools\dev\samples\out_testsample1_64_trace_notepad.exe_1472.json
[DDR] [INFO] Done creating logfiles.
[DDR] [INFO] Configuration file closed
[DDR] [INFO] Doing a light trace from 0x0000000140001000 to 0x0000000140003000 logging to C:\tools\dev\samples\out_testsample1_64_trace.json

[DDR] [DEBUG] dr_client_main callbacks set.
[DDR] [INFO] Initalization done.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:251:dr_client_main(): dr_client_main end.

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = notepad.exe Process ID = 1472 Threat ID = 9416 Thread counter = 1
[DDR] [INFO] New process, first thread started.
[DDR] [DEBUG] [MEMOP] allocated memory for main thread. Memaddr: 0x00007ff670b12e48 thread_id=9416 process_id=1472
[DDR] [INFO] writing thread info to: C:\tools\dev\samples\\ddr_threads_notepad.exe_1472.txt
[DDR] [INFO] First thread. Setting main thread id to 9416
[DDR] [INFO] Samplename: C:\windows\notepad.exe.
[DDR] [INFO] PEB            : 0x0000006f477c6000
[DDR] [INFO] PE Imagebase   : 0x00007ff6f0a90000
[DDR] [INFO] PE EP          : 0x00007ff6f0ab3c00
[DDR] [INFO] File EP        : 0x0000000140023c00
[DDR] [INFO] EP diff        : 0x00007ff5b0a90000

[DDR] [DEBUG] event_thread_init_trace_instr end.
[DDR] [DEBUG] event_module_load_trace_instr module loaded: dynamorio.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ddr_stable.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: drmgr.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: drwrap.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: notepad.exe:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: COMCTL32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: win32u.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ucrtbase.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: KERNELBASE.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: msvcp_win.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: gdi32full.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: KERNEL32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: msvcrt.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: GDI32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: combase.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: SHCORE.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: RPCRT4.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: USER32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: IMM32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ntdll.dll:
<curiosity: rex.w on OPSZ_6_irex10_short4!>
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
<Application changing protections of system memory at least once (0x00007fffe8def000-0x00007fffe8df3000)>
[DDR] [DEBUG] event_module_load_trace_instr module loaded: bcryptPrimitives.dll:
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] Operant is XMM Register this is not supported in the moment
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:383:DecProcCounter(): Decreased process counter = 1.
[DDR] [INFO] Main process PID 12996 (testsample1_64.exe) process exit function reached. Waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:546:event_exit(): Using log path C:\tools\dev\samples\
.[DDR] [INFO] Writing process info to: C:\tools\dev\samples\ddr_processtrace.txt
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:560:event_exit(): writing processes to processfile: PID: 12996 (testsample1_64.exe)
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\main.c:560:event_exit(): writing processes to processfile: PID: 1472 (notepad.exe)
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] event_module_load_trace_instr module loaded: SECHOST.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: ADVAPI32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: AppCore.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: UxTheme.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: CLBCatQ.DLL:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: MrmCoreR.dll:
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] event_module_load_trace_instr module loaded: SHELL32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: Wldp.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: Windows.Storage.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: SHLWAPI.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: OLEAUT32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: MSCTF.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: TextShaping.dll:
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] event_module_load_trace_instr module loaded: MPR.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: WinTypes.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: efswrt.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: twinapi.appcore.dll:

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = notepad.exe Process ID = 1472 Threat ID = 13188 Thread counter = 2
[DDR] [INFO] Existing process. New thread started.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\trace_instr.c:119:event_thread_init_trace_instr(): Using log path C:\tools\dev\samples\
[DDR] [DEBUG] [MEMOP] allocated memory for sub thread. Memaddr: 0x00007ff670b12fd8 thread_id=13188 process_id=1472
[DDR] [WARNING] This is not the first thread. Multithreaded is not supported, but works in many case.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = notepad.exe Process ID = 1472 Threat ID = 3256 Thread counter = 3
[DDR] [INFO] Existing process. New thread started.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\trace_instr.c:119:event_thread_init_trace_instr(): Using log path C:\tools\dev\samples\
[DDR] [DEBUG] [MEMOP] allocated memory for sub thread. Memaddr: 0x00007ff670b12f90 thread_id=3256 process_id=1472
[DDR] [WARNING] This is not the first thread. Multithreaded is not supported, but works in many case.

[DDR] [DEBUG] event_thread_init_trace_instr start.
[DDR] [INFO] New thread initialization started. Appname = notepad.exe Process ID = 1472 Threat ID = 6644 Thread counter = 4
[DDR] [INFO] Existing process. New thread started.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\trace_instr.c:119:event_thread_init_trace_instr(): Using log path C:\tools\dev\samples\
[DDR] [DEBUG] [MEMOP] allocated memory for sub thread. Memaddr: 0x00007ff670b13020 thread_id=6644 process_id=1472
[DDR] [WARNING] This is not the first thread. Multithreaded is not supported, but works in many case.
[DDR] [DEBUG] event_module_load_trace_instr module loaded: OLEACC.dll:
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] event_module_load_trace_instr module loaded: NTMARTA.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: WS2_32.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: CoreMessaging.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: CoreUIComponents.dll:
[DDR] [DEBUG] event_module_load_trace_instr module loaded: TextInputFramework.dll:
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [DEBUG] C:\tools\dev\git\DynDataResolver\ddr_client\ddr_stable\ddr_helper_functions.c:418:GetProcCounter(): process counter = 1.
[DDR] [INFO] waiting for other processes to exit.
[DDR] [INFO] Time out reached. Some processes launched by the main process are still running. Trying to terminate them…
[DDR] [INFO] Trying to kill PID: 1472 (notepad.exe)
[DDR] [INFO] PID: 1472 (notepad.exe) successfully terminated
<Failed to suspend attached-but-never-scheduled thread 12652>
<Failed to suspend attached-but-never-scheduled thread 14136>
<Failed to suspend attached-but-never-scheduled thread 12028>

C:\tools\dev>pause
Press any key to continue . . .

 

本稿は 2020 年 10 月 20 日に Talos Grouppopup_icon のブログに投稿された「 Dynamic Data Resolver – Version 1.0.1 beta popup_icon」の抄訳です。

 

コメントを書く