這段時間在做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...