More Related Content
PPTX
FriendlyによるWindowsアプリテスト自動化手法 基礎技術編 PPTX
PPTX
CEDEC2021 Android iOS 実機上での自動テストをより楽に有意義にする為に ~端末管理・イメージ転送・動画記録等の周辺情報のノウハウ共有~ PDF
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム PDF
PDF
PDF
PDF
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出! What's hot
PDF
PDF
30分でわかるマイクロサービスアーキテクチャ 第2版 PDF
PDF
PDF
強いて言えば「集約どう実装するのかな、を考える」な話 PPTX
JIRA / Confluence の必須プラグインはこれだ PPTX
PDF
お客様の目を覚ませ! ついでに自分の目も覚ませ! デザイン思考のクライアントワークのプレセールス PDF
Are Design Patterns Dead? PPTX
Karpenterで君だけの最強のオートスケーリングを実装しよう PDF
PDF
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜 PPTX
Amazon Kinesis Video Streams WebRTC 使ってみた PPTX
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 PDF
UIデザインとUXの超基礎「UI Design & UX for ENGINEER」 PDF
Cocos2d-xを用いた "LINE タワーライジング" の開発事例 PPTX
UI設計の土台になる考え方-インテリジェントネット社内勉強会 PDF
なぜ私はソニックガーデンのプログラマに転身できたのか? PPTX
C++のtemplate特殊化的なことをC#でやった話 PPTX
Viewers also liked
PDF
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA PPTX
Friendlyを使ったwindowsアプリテスト自動化 PDF
PDF
PDF
Template Meta Programming入門から応用まで PPTX
Sansan における Android アプリ自動テスト導入事例 PPTX
Visual Studio 2017 とTeam Foundation Server /Visual Studio Team Services で実現... PPTX
PPTX
Visual Studio と Team Foundation Server / Visual Studio Team Services で実現するビル... PPTX
Visual Studio とTeam Foundation Server /Visual Studio Team Services で実現するビル... PDF
PPTX
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上 PDF
PPTX
価値あるシステムテスト自動化の実現By friendly PPTX
PPTX
PDF
PDF
AAA2015 関西風と欧米風 2つのTest Automation Patterns PDF
「自動家(オートメータ)をつくる」-システムテスト自動化カンファレンス2014 「.reviewrc」枠発表- PDF
自動家(オートメーター)大地に立つ!! 〜オールドタイプの一年戦争〜 Similar to Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
PPTX
FriendlyとTestAssistantProでテスト自動化やってみた PPTX
Windowsアプリテスト自動化 [Friendly+delphi] PDF
PDF
PPTX
【Delphi / C++Builder Starter チュートリアルシリーズ】 第5回 ‟イベントに合わせて動かしてみよう„ PPTX
【オンライン】.NET 6 移行祭り! C# Tokyo イベント PPTX
Test automation strategy for .net core 3 transition KEY
KEY
テスト初心者Androiderのためのソフトウェアテスト入門 PDF
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう PDF
PDF
GUI Test is (not) necessary PDF
PDF
KEY
Functional Testing in #YAPCASIA PDF
TokyoR24 - PerformanceRvsC# PDF
High-speed Sorting using Portable FPGA Accelerator (IPSJ 77th National Conven... PDF
IEICE technical report (RECONF), January 2015. PDF
とことんF#よぷよ! F# + XNA ゲームプログラミング入門 More from Tatsuya Ishikawa
PPTX
PPTX
メタな感じのプログラミング(プロ生 + わんくま 071118) PPTX
burikaigi2025.pptx Burikaigi2025でつかった資料です。 PPTX
DotNetConf2024の資料 BlazorとLowCodeと生成AIの話です PPTX
Infragistics Web Day 2017 - 継続的な開発を支える テスト自動化技術 PPTX
PPTX
PPTX
PDF
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ PPTX
PPTX
Bindingからframework elementを見つける PPTX
PPTX
PPTX
PPTX
PPTX
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
①君のものは僕のもの
public partial classMainForm : Form
{
ComboBox _comboBox;
string MyFunc(int value)
{
return value.ToString();
}
}
public void YourThingIsMine()
{
var process=
Process.GetProcessesByName("Target")[0];
//友達になると・・・
var app = new WindowsAppFriend(process);
//別プロセスのオブジェクトを
//自分のプロセスのもののように操作できる。
dynamic form = app.Type<Application>().OpenForms[0];
form._comboBox.SelectedIndex = 1;
string ret = form.MyFunc(3);
}
そ、そんな・・・
.Netはもちろん
NativeのDLL公開関数もOK!
- 10.
②僕のものは君のもの
void MyThingIsYours()
{
var process=Process.GetProcessesByName("Target")[0];
var app = new WindowsAppFriend(process);
//自分のコードを動的にインジェクション!
WindowsAppExpander.LoadAssembly(app, GetType().Assembly);
//挿入したコードを相手プロセスで実行
app.Type(GetType()). ForTest();
}
static void ForTest() { /*テスト用*/ }
え!? 勝手に?
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
備考) テスタビリティー操作(自動化と相性悪いコード)
//ここの結合は不安が少ない
void Event(objectsender, EventArgs e)
{
EventCore(PointToClient(Control. MousePosition));
}
//これをFriendlyで呼び出す
void EventCore(Point mousePosClient)
{
//ここから先のロジックをテストしたい。
}
プロダクトを変更。
難易度高くて効果の低い
部分は自動化しない。
効果の高い部分のみ
呼び出せるようにする。
・キー、マウス直接参照
・D&D
・OS提供のGUI
etc…
・タイマ
・非同期
・ペイントイベントを利用したトリッキーコード
etc…
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
HMODULE Func(LPCWSTR)
{
HMODULE m= nullptr;
return m;
mov rax,qword ptr [rsp]
}
int _tmain(int argc, _TCHAR* argv[])
{
LPTHREAD_START_ROUTINE f = (decltype(f))Func;
auto ret = f(nullptr);
call qword ptr [f]
mov dword ptr [ret],eax
return 0;
}
実験してみました!
戻り値使わなかったら
全く問題なし (゚∀゚;)
HMODULEを戻り値に使っても
レジスタしかつかわない
情報が落ちただけ
- 25.
挿入したDLLのAPIを呼び出し
//自分のプロセスで関数ポインタを取得
IntPtr mod =LoadLibrary(dllPath);
IntPtr proc = GetProcAddress(mod, procName);
//差分を計算
var distance = …;//proc - mod; x64とx86で型が違う
//相手プロセスの中でのDLLのアドレスを取得
IntPtr targetDllAddress;
EnumProcessModules(...)
...
//差分を足したら、対象プロセス内での関数ポインタになる
IntPtr pFunc = …;//targetDllAddress + distance;
//指定の関数を対象プロセスで実行!
CreateRemoteThread(..., pFunc, path, ...);
Init()
初期化開始!
通信サーバー
立ち上げるよー
- 26.
- 27.
- 28.
- 29.
- 30.
お知らせ 登壇予定
9/20 Boost.勉強会#16 大阪
http://osakaboostjp.doorkeeper.
jp/events/14150
9/11 SQIPシンポジウム
http://www.juse.jp/sqip/symp
osium/timetable/day1/
- 31.