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

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>
            亚洲国产成人精品女人久久久| 亚洲国产一区二区三区青草影视| 欧美日韩一区二区在线播放| 亚洲欧美日本另类| 亚洲国产欧美一区| 国产精品卡一卡二卡三| 欧美激情按摩| 欧美激情第3页| 欧美激情网友自拍| 欧美视频一区二区在线观看| 欧美日韩免费观看一区| 欧美日韩在线免费观看| 欧美极品影院| 欧美午夜视频在线观看| 国产农村妇女毛片精品久久麻豆| 国产麻豆精品theporn| 黑人操亚洲美女惩罚| 激情综合在线| 99av国产精品欲麻豆| 性8sex亚洲区入口| 免费在线观看一区二区| 亚洲九九爱视频| 午夜视频一区二区| 欧美暴力喷水在线| 国产欧美日韩另类视频免费观看| 亚洲大片在线| 午夜精品久久久久久久99热浪潮| 另类天堂av| 国产精品久久久久久久久久三级| 国产欧美在线| 一本色道久久综合| 麻豆精品国产91久久久久久| 一区二区三区欧美在线观看| 久久婷婷麻豆| 国产精品自拍小视频| 一本久久精品一区二区| 美女黄毛**国产精品啪啪| 亚洲网站在线播放| 欧美激情一区在线观看| 一区二区在线看| 欧美在线三级| 99精品视频一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲国产99精品国自产| 日韩一级在线观看| 久久精品在线| 亚洲视频在线视频| 欧美国产视频在线| 亚洲成色www8888| 久久久另类综合| 亚洲女性喷水在线观看一区| 欧美天天在线| 中文精品视频| 日韩午夜三级在线| 欧美日韩国产123区| 99精品欧美一区| 亚洲精品久久久久久久久久久久 | 亚洲午夜精品一区二区三区他趣| 欧美韩日一区二区三区| 欧美中文在线视频| 国内精品久久久久久久影视麻豆 | 国产日韩欧美一区二区| 午夜精品久久久久久久99热浪潮 | 国产欧美一区二区三区沐欲 | 亚洲一区国产精品| 一本色道久久综合亚洲精品不卡| 欧美激情一区二区三区蜜桃视频| 一本色道婷婷久久欧美| 99在线精品视频| 国产精品青草久久| 久久亚洲一区二区| 亚洲国产精品久久| 亚洲国产婷婷综合在线精品| 欧美欧美午夜aⅴ在线观看| 一区二区三区日韩精品| 亚洲一区二区三区777| 国产一区二区黄| 欧美高清视频免费观看| 欧美日韩国产在线播放| 欧美亚洲免费电影| 久久久亚洲影院你懂的| 亚洲欧洲一区| 国产精品99久久久久久久女警| 国产日本欧美在线观看| 久久精品一区四区| 欧美成人精品在线| 亚洲你懂的在线视频| 久久精品人人做人人爽电影蜜月 | 在线观看日韩一区| 亚洲免费大片| 在线观看精品一区| 一级成人国产| 永久91嫩草亚洲精品人人| 99精品99| 亚洲娇小video精品| 久久青草久久| 中日韩男男gay无套| 先锋影音一区二区三区| 亚洲第一区在线| 制服诱惑一区二区| 亚洲激情在线激情| 欧美一区二区三区四区视频 | 久久久亚洲国产美女国产盗摄| 久久综合九色九九| 久久er精品视频| 欧美日韩一区二区欧美激情| 免费成人av在线看| 国产女主播在线一区二区| 亚洲高清在线视频| 国内免费精品永久在线视频| 99这里只有久久精品视频| 一区二区亚洲| 午夜宅男欧美| 亚洲欧美日韩国产中文 | 久久色中文字幕| 久久国产欧美精品| 欧美日韩在线三区| 一区二区三区在线观看欧美| 日韩视频免费观看| 亚洲精品专区| 久久琪琪电影院| 午夜视频一区二区| 欧美视频免费| 亚洲最新合集| av成人激情| 久久不射2019中文字幕| 午夜精品福利在线观看| 国产精品a久久久久久| 亚洲大胆女人| 亚洲欧洲日韩综合二区| 亚洲精品久久久蜜桃 | 鲁大师影院一区二区三区| 日韩午夜三级在线| 亚洲国产精品视频| 国产午夜精品一区二区三区视频 | 欧美一区二区免费观在线| 亚洲精品国产日韩| 国产精品卡一卡二| 欧美日韩精品免费在线观看视频| 欧美日韩亚洲国产一区| 91久久久久久久久| 亚洲精品小视频在线观看| 亚洲欧美日韩天堂| 在线观看国产日韩| 亚洲九九精品| 亚洲国产精品www| 久久青草久久| 亚洲综合视频一区| 欧美日韩情趣电影| 亚洲欧洲一区二区三区久久| 亚洲精品视频免费观看| 欧美精品手机在线| 日韩午夜激情| 欧美一区二区三区久久精品| 国产日韩精品视频一区二区三区 | 亚洲一级二级在线| 亚洲欧美日韩视频二区| 国产精品盗摄久久久| 亚洲欧美日韩区| 免播放器亚洲| 亚洲精品视频啊美女在线直播| 欧美日韩 国产精品| 亚洲小说区图片区| 久久免费偷拍视频| 在线欧美视频| 欧美视频你懂的| 久久久91精品国产一区二区三区 | 亚洲欧美成人一区二区在线电影| 国产精品女主播一区二区三区| 久久精品成人欧美大片古装| 亚洲福利视频一区| 欧美一区二区在线看| 亚洲欧洲日产国产网站| 国产精品羞羞答答| 免费不卡在线视频| 亚洲小说欧美另类社区| 欧美国产一区二区在线观看 | 久久综合九色| 亚洲图片欧美一区| 1000部精品久久久久久久久| 欧美日韩视频| 裸体一区二区三区| 亚洲欧美大片| 亚洲激情黄色| 欧美fxxxxxx另类| 亚洲欧美日韩直播| 亚洲日本乱码在线观看| 国产一区二区你懂的| 欧美日韩国产高清| 老鸭窝91久久精品色噜噜导演| 亚洲欧美美女| 99视频有精品| 亚洲国产另类精品专区| 免费av成人在线| 另类天堂av| 久久资源av| 久久久久久久999| 亚洲男女自偷自拍| 夜夜嗨av色综合久久久综合网| 亚洲国产视频直播|