青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開心的工作
簡(jiǎn)單、開放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

讓EXE導(dǎo)出函數(shù)

Posted on 2009-10-24 22:12 S.l.e!ep.¢% 閱讀(294) 評(píng)論(0)  編輯 收藏 引用 所屬分類: RootKit
標(biāo) 題: 【原創(chuàng)】讓EXE導(dǎo)出函數(shù)
作 者: ylp1332
時(shí) 間: 2007-12-20,21:33
鏈 接: http://bbs.pediy.com/showthread.php?t=56840

初步搞定。

問題來源:
偶然發(fā)現(xiàn)OllyDBG.exe導(dǎo)出了一堆函數(shù),這些函數(shù)都是供其插件調(diào)用的。對(duì)這種體系結(jié)構(gòu)很感
興趣,想弄清楚它的實(shí)現(xiàn)原理。后來又看到梁肇新的書《編程高手箴言》第278頁(yè)提到的調(diào)用
門,覺得都應(yīng)該差不多。


三種不同的解決辦法(原理可能是一樣的,:)):

1)在導(dǎo)出函數(shù)聲明之前加上__declspec(dllexport)。例:
__declspec(dllexport) int Add(int a, int b);
__declspec(dllexport) int Sub(int a, int b);
__declspec(dllexport) int Mul(int a, int b);
__declspec(dllexport) int Div(int a, int b);

2)在鏈接器參數(shù)中設(shè)置。例:
#pragma comment(linker, "/EXPORT:_Add,@1,NONAME")
#pragma comment(linker, "/EXPORT:_Sub,@2,NONAME")
#pragma comment(linker, "/EXPORT:_Mul,@3,NONAME")
#pragma comment(linker, "/EXPORT:_Div,@4,NONAME")

3)添加一個(gè)def文件,例:
EXPORTS
?? Add??????? @1?? NONAME
?? Sub??????? @2?? NONAME
?? Mul??????? @3?? NONAME
?? Div??????? @4?? NONAME
另需要在鏈接器命令行參數(shù)中指定def文件名:
/DEF:Callee.def
注意:在def文件中不要有
LIBRARY [library][BASE=address]
這樣的語句。

相比較而言,后兩種方法可以設(shè)置更多的參數(shù)。


函數(shù)舉例:

extern "C"
{

?? int Add(int a, int b)
?? {
???? return (a + b);
?? }

?? int Sub(int a, int b)
?? {
???? return (a - b);
?? }

?? int Mul(int a, int b)
?? {
???? return (a * b);
?? }

?? int Div(int a, int b)
?? {
???? if (b == 0)
?????? return 0;
???? else
?????? return (a / b);
?? }

}

編譯時(shí)會(huì)自動(dòng)生成相應(yīng)的導(dǎo)出庫(kù)(lib)文件,供調(diào)用者使用。


調(diào)用方法和普通的動(dòng)態(tài)鏈接庫(kù)調(diào)用一樣。
調(diào)用者必須能夠找到被調(diào)用者的位置,否則報(bào)錯(cuò),被調(diào)用者是否運(yùn)行不影響。

調(diào)用代碼舉例:

extern "C"
{
?? int Add(int a, int b);
?? int Sub(int a, int b);
?? int Mul(int a, int b);
?? int Div(int a, int b);
}

#pragma comment (lib, "Callee.lib")

void CCallerDlg::OnBnClickedCalculate()
{
?? // TODO: Add your control notification handler code here
?? UpdateData(TRUE);

?? switch (((CComboBox *)GetDlgItem(IDC_COMBO_OPERATOR))->GetCurSel())
?? {
?? case ADD:
???? {
?????? m_iResult = Add(m_iNum1, m_iNum2);
?????? break;
???? }
?? case SUB:
???? {
?????? m_iResult = Sub(m_iNum1, m_iNum2);
?????? break;
???? }
?? ...
?? ...


我在OD中跟了一下,發(fā)現(xiàn)這跟調(diào)用動(dòng)態(tài)鏈接庫(kù)也差不多。
不過那幾個(gè)函數(shù)被映射到下面的地址處:

003810F0 >?? 8B4424 08????????????????? mov????? eax, dword ptr [esp+8]
003810F4???? 8B4C24 04????????????????? mov????? ecx, dword ptr [esp+4]
003810F8???? 03C1?????????????????????? add????? eax, ecx
003810FA???? C3???????????????????????? retn
003810FB???? CC???????????????????????? int3
003810FC???? CC???????????????????????? int3
003810FD???? CC???????????????????????? int3
003810FE???? CC???????????????????????? int3
003810FF???? CC???????????????????????? int3
00381100 >?? 8B4424 04????????????????? mov????? eax, dword ptr [esp+4]
00381104???? 2B4424 08????????????????? sub????? eax, dword ptr [esp+8]
00381108???? C3???????????????????????? retn
00381109???? CC???????????????????????? int3
0038110A???? CC???????????????????????? int3
0038110B???? CC???????????????????????? int3
0038110C???? CC???????????????????????? int3
0038110D???? CC???????????????????????? int3
0038110E???? CC???????????????????????? int3
0038110F???? CC???????????????????????? int3
00381110 >?? 8B4424 04????????????????? mov????? eax, dword ptr [esp+4]
00381114???? 0FAF4424 08??????????????? imul???? eax, dword ptr [esp+8]
00381119???? C3???????????????????????? retn
0038111A???? CC???????????????????????? int3
0038111B???? CC???????????????????????? int3
0038111C???? CC???????????????????????? int3
0038111D???? CC???????????????????????? int3
0038111E???? CC???????????????????????? int3
0038111F???? CC???????????????????????? int3
00381120 >?? 8B4C24 08????????????????? mov????? ecx, dword ptr [esp+8]
00381124???? 85C9?????????????????????? test???? ecx, ecx
00381126???? 75 03????????????????????? jnz????? short 0038112B
00381128???? 33C0?????????????????????? xor????? eax, eax
0038112A???? C3???????????????????????? retn

跟常規(guī)的動(dòng)態(tài)鏈接庫(kù)被映射到高地址處略有不同。
還不知道是什么原因。

結(jié)論:
EXE完全可以和DLL一樣導(dǎo)出函數(shù),一樣被調(diào)用。

進(jìn)一步的工作:
我發(fā)現(xiàn)這個(gè)例子跟OllyDbg.exe還是有些不同,跟“調(diào)用門”的說法也有不同。這里實(shí)際上還是
跟DLL差不多的原理。下一步爭(zhēng)取實(shí)現(xiàn)一個(gè)跟OllyDbg.exe差不多的例子。

致謝:
感謝海風(fēng)月影、北極星2003、默數(shù)悲傷所提供的思路。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国产亚洲高清剧情介绍| 久久高清免费观看| 欧美午夜免费电影| 欧美国产激情二区三区| 欧美xart系列高清| 欧美国产日韩精品免费观看| 欧美国产三区| 国产精品极品美女粉嫩高清在线| 国产精品天美传媒入口| 禁断一区二区三区在线| 亚洲国产一二三| 一区二区三区视频在线观看| 一本色道久久| 国产字幕视频一区二区| 国内成+人亚洲+欧美+综合在线| 国产精品一区在线观看| 国产一区二区三区在线观看视频| 尤物yw午夜国产精品视频| 亚洲人成7777| 欧美一区1区三区3区公司| 另类国产ts人妖高潮视频| 亚洲精品日产精品乱码不卡| 午夜伦理片一区| 欧美va亚洲va日韩∨a综合色| 国产精品啊啊啊| 亚洲黄色成人网| 欧美一级播放| 亚洲人成毛片在线播放女女| 一区二区精品在线| 久久中文欧美| 国产日韩在线亚洲字幕中文| 99精品久久久| 久久这里只精品最新地址| 日韩亚洲欧美成人| 久久精品日产第一区二区| 欧美午夜片欧美片在线观看| 亚洲精品久久在线| 久久综合电影一区| 亚洲一区二区精品在线观看| 欧美大片在线影院| 在线观看日韩国产| 久久久国产一区二区| 9i看片成人免费高清| 免播放器亚洲一区| 激情丁香综合| 久久九九有精品国产23| 亚洲一区三区视频在线观看| 欧美日韩精品| 一级日韩一区在线观看| 欧美激情视频一区二区三区免费| 久久国产精品免费一区| 国产欧美一区二区三区久久| 亚洲愉拍自拍另类高清精品| 亚洲精品免费网站| 欧美精品日韩一本| 亚洲乱码视频| 亚洲黄色成人久久久| 蜜臀99久久精品久久久久久软件 | 亚洲二区三区四区| 久久久久久97三级| 在线观看成人网| 快射av在线播放一区| 久久精品最新地址| 在线日韩av片| 亚洲国产精品一区二区三区| 欧美成人精品影院| 日韩一级片网址| 日韩一级黄色片| 国产精品看片你懂得| 午夜精品福利视频| 欧美日韩国产bt| 国产精品一区二区在线观看| 亚洲欧美美女| 欧美一区二区在线| 黄色成人av网站| 美日韩在线观看| 免费不卡视频| 亚洲天堂成人在线观看| 亚洲欧美成人一区二区三区| 国产一区 二区 三区一级| 老司机一区二区| 欧美激情成人在线| 亚洲欧美在线一区二区| 欧美在线中文字幕| 亚洲清纯自拍| 亚洲午夜精品一区二区三区他趣 | 久久福利影视| 91久久国产综合久久| 亚洲人成在线播放| 国产欧美一区二区精品婷婷| 免费成人av在线看| 欧美日韩亚洲综合一区| 久久精品99国产精品日本| 欧美阿v一级看视频| 亚洲欧美国产不卡| 久久久久久久综合色一本| 中文网丁香综合网| 亚洲欧美日本在线| 精品成人免费| 一本久久综合亚洲鲁鲁| 狠狠色丁香婷婷综合| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲一区二区三区高清 | 亚洲影音一区| 久久女同精品一区二区| 亚洲无线观看| 久久综合久久综合这里只有精品 | 久久精品九九| 亚洲第一级黄色片| 欧美成人午夜视频| 欧美视频福利| 久久性色av| 欧美亚州一区二区三区 | 久久国产精品高清| 亚洲一区二区三区中文字幕| 久久综合狠狠| 久久久中精品2020中文| 欧美在线国产| 欧美一级久久| 亚洲制服欧美中文字幕中文字幕| 久久综合色天天久久综合图片| 亚洲伊人久久综合| 欧美日韩高清在线观看| 欧美高清视频| 国产亚洲激情视频在线| 一本色道久久88综合亚洲精品ⅰ| 亚洲成人在线网| 久久精品一二三| 久久精品盗摄| 国产三级欧美三级日产三级99| 日韩视频免费看| 99成人在线| 欧美精品国产一区| 亚洲国产精品福利| 在线看日韩av| 久久天堂av综合合色| 久久在线免费视频| 在线看片欧美| 欧美大片在线观看一区| 亚洲欧洲中文日韩久久av乱码| 亚洲高清电影| 欧美大片免费| 亚洲精品之草原avav久久| 一本久道综合久久精品| 欧美精品v日韩精品v韩国精品v | 欧美视频国产精品| 一本色道久久综合亚洲精品高清 | 欧美色欧美亚洲另类二区| 亚洲人www| 亚洲一区二区三区三| 国产精品外国| 欧美在线免费| 欧美黄网免费在线观看| 亚洲另类在线视频| 欧美三级视频在线| 亚洲一区二区在线视频| 久久激情视频久久| 亚洲国产精品ⅴa在线观看 | 欧美国产精品久久| 日韩视频免费看| 欧美一区网站| 亚洲国产三级在线| 欧美人成在线视频| 亚洲欧美成aⅴ人在线观看| 久久影院午夜论| 一区二区三区视频在线| 国产在线拍偷自揄拍精品| 欧美成人有码| 亚洲欧美日韩一区在线| 欧美黄色影院| 欧美在线精品免播放器视频| 亚洲第一中文字幕| 国产精品超碰97尤物18| 久久久久久九九九九| 亚洲乱码视频| 久久尤物视频| 亚洲一区中文字幕在线观看| 亚洲精品久久久蜜桃| 久久久久国产一区二区三区| 亚洲高清视频中文字幕| 香蕉精品999视频一区二区| 雨宫琴音一区二区在线| 欧美天天视频| 免费国产自线拍一欧美视频| 一区二区日韩免费看| 久久久久久久999| 99精品欧美一区二区三区| 国产一区二区三区在线观看免费视频| 欧美—级a级欧美特级ar全黄| 亚洲欧美一区二区精品久久久| 欧美激情一区| 久久久久国产一区二区| 中文网丁香综合网| 亚洲国产成人av在线| 国产精品伦一区| 欧美另类综合| 噜噜噜躁狠狠躁狠狠精品视频 | 一区二区高清视频| 91久久久久久久久久久久久| 久久一区二区三区国产精品|