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

S.l.e!ep.¢%

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

讓EXE導出函數(shù)

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

初步搞定。

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


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

1)在導出函數(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ù)中設置。例:
#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)添加一個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ù)舉例:

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);
?? }

}

編譯時會自動生成相應的導出庫(lib)文件,供調(diào)用者使用。


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

調(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)用動態(tài)鏈接庫也差不多。
不過那幾個函數(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ī)的動態(tài)鏈接庫被映射到高地址處略有不同。
還不知道是什么原因。

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

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

致謝:
感謝海風月影、北極星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>
            欧美91视频| 亚洲免费视频观看| 女主播福利一区| 亚洲性图久久| 中文精品99久久国产香蕉| 一二三区精品| 亚洲——在线| 久久精品理论片| 欧美va亚洲va香蕉在线| 免费亚洲电影在线观看| 亚洲电影av在线| 久久综合一区| 亚洲福利久久| 在线一区二区日韩| 校园春色综合网| 狂野欧美激情性xxxx| 暖暖成人免费视频| 欧美精品成人一区二区在线观看 | 精品99视频| 亚洲国产女人aaa毛片在线| 亚洲精品日韩综合观看成人91| 日韩亚洲欧美在线观看| 欧美一区二区福利在线| 欧美va亚洲va日韩∨a综合色| 亚洲久久视频| 久久精品国产亚洲高清剧情介绍| 欧美成人网在线| 国产精品婷婷| 亚洲精品欧美极品| 欧美主播一区二区三区美女 久久精品人| 久久青草欧美一区二区三区| 亚洲国产成人精品久久| 亚洲欧美一区二区三区在线| 欧美大胆成人| 尤物在线精品| 久久国产一二区| 日韩午夜在线电影| 美女精品视频一区| 国产乱码精品一区二区三区五月婷 | 国产精品久久久久久久浪潮网站 | 亚洲成人在线视频网站| 亚洲一区国产视频| 欧美激情中文字幕一区二区| 国产一区二区久久| 午夜精品久久久久久久99樱桃 | 欧美色播在线播放| 亚洲激情一区| 免费视频最近日韩| 欧美一级在线亚洲天堂| 国产精品久久久久久久久婷婷| 一区二区激情| 亚洲精品日韩精品| 美女视频黄 久久| 一区二区亚洲精品国产| 久久人人爽人人| 欧美在线free| 狠狠v欧美v日韩v亚洲ⅴ| 久久国产精品亚洲77777| 亚洲自拍啪啪| 久久综合色婷婷| 欧美一区二区三区在线播放| 夜夜嗨av一区二区三区四区| 欧美日韩国产综合久久| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产一区自拍视频| 久久本道综合色狠狠五月| 亚洲综合视频网| 国产日韩av一区二区| 久久精品一区中文字幕| 欧美一区二区三区婷婷月色 | 欧美一区二区三区在线播放| 亚洲欧美日本日韩| 国产亚洲美州欧州综合国| 久久人人97超碰人人澡爱香蕉| 久久精品国产清高在天天线 | 亚洲欧美日韩视频二区| 亚洲一区二区免费看| 国产精品久久999| 欧美一区二区三区免费观看视频| 亚洲一区二区在线播放| 国产在线拍揄自揄视频不卡99| 久久国产精品久久久久久电车| 久久久国产精品亚洲一区| 亚洲黄色尤物视频| 亚洲美女免费精品视频在线观看| 欧美日韩亚洲一区二区三区在线| 午夜精品福利视频| 久久精品中文| 一区二区三区四区国产精品| 午夜欧美精品久久久久久久| 国产一区二区无遮挡| 蜜桃av一区二区| 欧美体内谢she精2性欧美| 久久久久久亚洲综合影院红桃| 蜜桃伊人久久| 欧美在线一区二区| 欧美成人免费观看| 欧美怡红院视频| 欧美精品一二三| 久久久久久久久久久一区| 欧美精品九九99久久| 久久久99国产精品免费| 欧美日韩国产a| 欧美成人资源| 国产精品电影网站| 欧美大片一区二区三区| 国产精品久久久久影院亚瑟| 美玉足脚交一区二区三区图片| 国产精品成人一区二区三区吃奶| 久久阴道视频| 国产美女精品视频| 亚洲日本成人网| 极品尤物久久久av免费看| 一区二区精品国产| 亚洲日本中文字幕区 | 欧美三级视频在线| 欧美国产日本在线| 欧美二区乱c少妇| 久久不射2019中文字幕| 亚洲精品一级| 久久精品亚洲乱码伦伦中文 | 久久亚洲一区二区三区四区| 欧美精品一区二区三区很污很色的| 欧美一区二区精品| 欧美日韩亚洲综合| 亚洲激情小视频| 亚洲国产女人aaa毛片在线| 久久久久久久久久久久久久一区| 欧美一区二区三区日韩| 国产精品成人v| 亚洲免费久久| 亚洲午夜精品一区二区| 欧美精品aa| 亚洲精品日韩在线观看| 亚洲精品一区二区网址| 欧美韩国一区| 亚洲精品日韩欧美| 亚洲一区二区三区视频| 欧美日韩成人精品| 日韩视频在线一区二区| 亚洲天堂久久| 国产精品v亚洲精品v日韩精品 | 久久综合给合久久狠狠色| 久久深夜福利| 亚洲国产精品一区二区第四页av| 久久九九热免费视频| 久久人人97超碰人人澡爱香蕉| 国外成人在线| 久久综合国产精品| 亚洲国产另类久久久精品极度| 亚洲黄色天堂| 欧美日韩综合精品| 亚洲一区二区三区精品动漫| 欧美在线观看你懂的| 国产亚洲欧美一区| 久久久噜噜噜久久久| 亚洲高清激情| 亚洲制服少妇| 国产日韩一区欧美| 久久久久久久网站| 亚洲欧洲一区二区三区| 亚洲欧美中文另类| 一区二区三区中文在线观看| 欧美精品一区二区三区蜜臀| 亚洲影视中文字幕| 久久全球大尺度高清视频| 日韩午夜高潮| 国产欧美精品一区二区色综合 | 亚洲在线视频观看| 欧美va亚洲va日韩∨a综合色| 亚洲精品国精品久久99热| 欧美日韩亚洲一区二区三区在线观看| 亚洲一二三区在线| 免费成人av在线| 亚洲欧美久久久| 亚洲第一成人在线| 欧美午夜精品久久久久久久 | 亚洲在线一区二区三区| 久久久久国产一区二区| 亚洲精品国产精品乱码不99按摩| 欧美日韩视频在线第一区| 性感少妇一区| 亚洲第一福利视频| 久久成人国产| 一区二区三区免费在线观看| 国户精品久久久久久久久久久不卡| 欧美成人免费网站| 午夜天堂精品久久久久| 亚洲另类一区二区| 免费亚洲一区二区| 久久精品一区二区三区四区 | 日韩视频在线播放| 狠狠色噜噜狠狠狠狠色吗综合| 欧美日韩一区二区三| 久久一日本道色综合久久| 亚洲免费在线观看视频| 亚洲第一天堂av| 久久躁狠狠躁夜夜爽| 欧美在线观看一区二区| 亚洲性感激情|