測試用的窮舉框架

2021-07-24 14:19:51 字數 3330 閱讀 5057

這段時間在做cm, 有時會用到窮舉.

整理了乙個測試框架, 以後做少量修改就可以快速進行窮舉測試.

乙個注入用dll, 乙個管理注入的exe.

//#include "stdafx.h"

#include

#include

#include

typedef

void (__cdecl* pfn_calcregsn)();

dword winapi threadproc(lpvoid lpthreadparameter)

; /*

000311a5 |. 8b0d 80330300 mov ecx, dword ptr [33380] ; ecx = 22222222

000311ab |. a1 88330300 mov eax, dword ptr [33388] ; eax = 11111111

000311b0 |. 51 push ecx ; push 22222222

000311b1 |. e8 9afeffff call 00031050 ; fnverify

000311b6 |. 83c4 34 add esp, 34 ; 平棧

*/::messagebox(null, "提示", "窮舉開始", mb_ok);

dwimagebase = (dword)getmodulehandle(null);

pfncalcregsn = (pfn_calcregsn)(dwimagebase + 0x1050);

// 003b11b9 |. 68 78333b00 push test1.003b3378 ; ascii "ok"

pcmsg_ok = (char*)(dwimagebase + 0x3378);

// 窮舉

dwtickbegin = gettickcount();

for (dwretrycnt = 0, dwindex = 0; dwindex < 0xffffffff; dwindex++, dwretrycnt++) ;

irc = 0;

pfncalcregsn();

__asm ;

if (!bgettimecostonce) else

} else

sprintf(szbuf, "dwretrycnttodispmsg = 0x%8.8x, \r\n", dwretrycnttodispmsg);

outputdebugstring(szbuf);

}// 003b11b9 |. 68 78333b00 push test1.003b3378 ; ascii "ok"

if ((1 == irc)

&& ('o' == *pcmsg_ok)

&& ('k' == *(pcmsg_ok + 1))

&& ('\0' == *(pcmsg_ok + 2))) else

if (bgettimecostonce && (dwretrycnt > dwretrycnttodispmsg))

}if (bfindregsnokonce) else

return0;}

// 如果在od中跑,用strongod外掛程式注入dll

// 如果自己跑,要寫個注入dll的管理程式

bool apientry dllmain(handle hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

)break;

case dll_thread_attach:

break;

case dll_thread_detach:

break;

case dll_process_detach:

break;

}return

true;}//

#include "stdafx.h"

#include

#include

#include

#include

#include

#define inject_dll_name _t("exhaustivedll.dll")

#define cmd_quit "quit"

// 注入管理程式用於測試

int main(int argc, char* argv)

; lpvoid lpobjprocessbuf = null;

size_t nnumberofbyteswritten = 0;

dword dwthreadid = 0;

do lpobjprocessbuf = virtualallocex(hobjprocess, 0, 0x1000, mem_commit, page_execute_readwrite);

if (null == lpobjprocessbuf)

zeromemory(szbuf, sizeof(szbuf));

strcpy(szbuf, inject_dll_name);

if (!writeprocessmemory(hobjprocess,

lpobjprocessbuf,

szbuf,

sizeof(szbuf),

&nnumberofbyteswritten))

hremotethread = createremotethread(hobjprocess,

null,

0,(lpthread_start_routine)loadlibrarya,

(lptstr)(lpctstr)lpobjprocessbuf,

0,&dwthreadid);

if (null == hremotethread)

printf("執行緒注入成功, 請開啟debugview, 觀察注入dll的輸出\r\n");

do } while (1);

} while (0);

if (null != hremotethread)

if (null != hobjprocess)

printf("end\r\n");

system("pause");

return0;}

測試用例框架優化(三)

在我之前的框架當中,我是把data 類,設計成所有測試類共享得全域性變數。所有的測試類,都是向data 類存資料,取資料。但是在我測試過程當中,會遇到乙個問題 在執行多介面併發 有2 3個介面用例同事執行 同時向data 類存資料就會出現問題 比如審核介面和 提現介面是併發執行的,審核介面用例執行的...

測試用例框架優化(四)

在測試過程當中,遇到了以下兩個問題 問題一 如果我們的 新增專案 介面有乙個要求,要求我們每次執行的時候title 不能都一樣呢?按照我們之前的方式 需要寫很多判斷,那麼我們可以優化一下嗎?解決方法 新增隨機數的生成 1 在測試用例 title 後面增加乙個 random str 替換識別符號,注意...

TryCatchFinally窮舉測試

package test.liuwei import lombok.extern.slf4j.slf4j author liuwei date 2019 09 27 09 45 desc trycatchfinally窮舉測試 演示在返回void以及非void時,尤其是在tcf組合中存在多個retu...