偷偷用别人的DLL的导出函数

RuntimeError 2010-02-11 10:12:44
一般来说,如果需要调用某个DLL中的导出函数,还需要有一个头文件和一个.def文件。如果是某个软件的DLL,我没有头文件和定义文件,但是我能通过dumpbin工具或者那个Dependency Walker查看这个DLL的导出函数,有没有办法知道其中的函数的参数类型以及返回值,这样我是否就能通过LoadLibrary函数加载这个DLL,并且取得函数地址,从而“盗用”别人的DLL了?
...全文
447 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
qrlvls 2010-02-21
  • 打赏
  • 举报
回复
类似帖已经讨论过无数次了,基本结论就是反汇编,如果反汇编搞不定的话就无解了
lover4ever 2010-02-16
  • 打赏
  • 举报
回复
以前高中的时候买了本叫《深入部析加密解密》的书,是西安交大出版的,里面讲了很多关于反汇编的知识,还有动态跟踪,调试的知识,大学毕业的时候还是看不懂,后来就送给同学了,他也看不懂,就带回家了,现在好想看一看,估计现在能用得上
Hyperevil 2010-02-11
  • 打赏
  • 举报
回复
哈,天下程序也一大抄~!
SuperLy 2010-02-11
  • 打赏
  • 举报
回复
必须知道相关函数的参数,尤其是各种指针;如果DLL函数内对指针作了强制类型转换就更麻烦;
当然,可以反汇编分析。
kings0527 2010-02-11
  • 打赏
  • 举报
回复
我前几天也询问很多高手有没有可以不通过反汇编直接得到dll函数原型的工具
答案全部是没有 也就是说只能反汇编
OD IDA 都可以 IDA可以F5
magic7004 2010-02-11
  • 打赏
  • 举报
回复
反汇编搞定~~回复内容太短了!
dd_zhouqian 2010-02-11
  • 打赏
  • 举报
回复
不能,你可以看到导出函数名,但你没法获取他的参数,也许汇编级调试可以,不过这样的人得需要些功底
RuntimeError 2010-02-11
  • 打赏
  • 举报
回复
LZ补充,比如我在一款网络工具里找到了一些关于网络的DLL,从名称判断,似乎是很有用的工具函数,于是我想“盗用”……
WizardK 2010-02-11
  • 打赏
  • 举报
回复
引用 16 楼 tr0j4n 的回复:
楼主说了:某个软件的DLL。哈哈……


呃。。。好吧,呵呵
MoXiaoRab 2010-02-11
  • 打赏
  • 举报
回复
楼主说了:某个软件的DLL。哈哈……
WizardK 2010-02-11
  • 打赏
  • 举报
回复
引用 12 楼 tr0j4n 的回复:
首先可以获得对应的结构体的大小,然后通过逆向调用那个DLL的EXE,获得结构体的具体信息。我弟弟在前面说过了。你没好好看。


LZ这个案例里面,哪有可用来逆向调用那个DLL的EXE?
yxwsbobo 2010-02-11
  • 打赏
  • 举报
回复
字符测试

! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ ¢ £ ¤ ¥ | § ¨ a - ˉ ° ± 2 3 ′ μ · 1 o à á è é ê ì í D ò ó × ù ú ü Y T à á a è é ê ì í e ò ó ÷ ù ú ü y t ā ā ē ē ě ě ī ī ń ň ō ō ū ū ∥ ǎ ǎ ǐ ǐ ǒ ǒ ǔ ǔ ǖ ǖ ǘ ǘ ǚ ǚ ǜ ǜ ɑ ɡ ˇ ˉ ˊ ˋ ˙ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω Ё А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я ё‐ – — ― ‖ ‘ ’ “ ” ‥ … ‰ ′ ″ ‵ ※  ̄ € ℃ ℅ ℉ № ℡ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻ ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ← ↑ → ↓ ↖ ↗ ↘ ↙ ∈ ∏ ∑ ∕ ° √ ∝ ∞ ∟ ∠ ∣ ∥ ∧ ∨ ∩ ∪ ∫ ∮ ∴ ∵ ∶ ∷ ~ ∽ ≈ ≌ ≒ ≠ ≡ ≤ ≥ ≦ ≧ ≮ ≯ ⊕ ⊙ ⊥ ⊿ ⌒ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ─ ━ │ ┃ ┄ ┅ ┆ ┇ ┈ ┉ ┊ ┋ ┌ ┍ ┎ ┏ ┐ ┑ ┒ ┓ └ ┕ ┖ ┗ ┘ ┙ ┚ ┛ ├ ┝ ┞ ┟ ┠ ┡ ┢ ┣ ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫ ┬ ┭ ┮ ┯ ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻ ┼ ┽ ┾ ┿ ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋ ═ ║ ╒ ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟ ╠ ╡ ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫ ╬ ╭ ╮ ╯ ╰ ╱ ╲ ╳ ▁ ▂ ▃ ▄ ▅ ▆ ▇ █ ▉ ▊ ▋ ▌ ▍ ▎ ▏ ▓ ▔ ▕ ■ □ ▲ △ ▼ ▽ ◆ ◇ ○ ◎ ● ◢ ◣ ◤ ◥ ★ ☆ ☉ ♀ ♂、 。 〃 々 〆 〇 〈 〉 《 》 「 」 『 』 【 】 〒 〓 〔 〕 〖 〗 〝 〞 〡 〢 〣 〤 〥 〦 〧 〨 〩 ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ く ぐ け げ こ ご さ ざ し じ す ず せ ぜ そ ぞ た だ ち ぢ っ つ づ て で と ど な に ぬ ね の は ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ ま み む め も ゃ や ゅ ゆ ょ よ ら り る れ ろ ゎ わ ゐ ゑ を ん ゛ ゜ ゝ ゞ ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ヮ ワ ヰ ヱ ヲ ン ヴ ヵ ヶ ー ヽ ヾ ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ ㄗ ㄘ ㄙ ㄚ ㄛ ㄜ ㄝ ㄞ ㄟ ㄠ ㄡ ㄢ ㄣ ㄤ ㄥ ㄦ ㄧ ㄨ ㄩ ㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩ ㈱ ㊣ ㎎ ㎏ ㎜ ㎝ ㎞ ㎡ ㏄ ㏎ ㏑ ㏒ ㏕  ǹ 〾 ⿰ ⿱ ⿲ ⿳ ⿴ ⿵ ⿶ ⿷ ⿸ ⿹ ⿺ ⿻ ⺁    ⺄ ⺈ ⺋  ⺌ ⺗    ⺧   ⺪ ⺮ ⺳ ⺶ ⺷  ⺻  ⻊ ︰ ︱ ︳ ︴ ︵ ︶ ︷ ︸ ︹ ︺ ︻ ︼ ︽ ︾ ︿ ﹀ ﹁ ﹂ ﹃ ﹄ ﹉ ﹊ ﹋ ﹌ ﹍ ﹎ ﹏ ﹐ ﹑ ﹒ ﹔ ﹕ ﹖ ﹗ ﹙ ﹚ ﹛ ﹜ ﹝ ﹞ ﹟ ﹠ ﹡ ﹢ ﹣ ﹤ ﹥ ﹦ ﹨ ﹩ ﹪ ﹫ ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ ¢ £ ¬  ̄ ¦ ¥

特 殊 文 字

丨 丩 丬丶 丷 丿 乀 乁 乂 乄 乆 乛 亅 亠 亻 冂 冫冖 凵 刂 讠 辶 釒 钅 阝 飠 牜 饣卩 卪 厸 厶 厽 孓 宀 巛 巜 彳 廴 彡 彐 彳 忄 扌 攵 氵灬 爫 犭 疒 癶 礻 糹 纟 罒罓 耂 艹 虍 訁 覀 ⺈ ⺋ ⺁    ⺄  ⺌ ⺗  ⺧   ⺪ ⺮ ⺳ ⺶ ⺷  ⺻ ⻊ 㑳 㑇 兦 亼 亽 亖 亗 吂 凸 凹 卝 卍 卐 匸 皕 旡 玊 尐 幵 朩囘 囙 囚 四 囜 囝 回 囟 因 囡 团 団 囤 囥 囦 囧 囨 囩 囪 囫 囬 园 囮 囯 困 囱 囲 図 围 囵 囶 囷 囸 囹 固 囻 囼 国 图 囿 圀 圁 圂 圃 圄 圅 圆 圇 圈 圉 圊 國 圌 圍 圎 圏 圐 圑 園 圓 圔 圕 圖 圗 團 圙 圚 圛 圜 圝 圞

字 符 组 合

、 ︶ㄣ ┈┾ べ_⺷ ╄→ ^o^ ^ǒ^ ╭ァ ⺷_⺷ _/~↘ ▄︻┻┳═一 じò ぴé ⺻;⺻ ┢┦ (*^﹏^*)
yxwsbobo 2010-02-11
  • 打赏
  • 举报
回复
mark
MoXiaoRab 2010-02-11
  • 打赏
  • 举报
回复
首先可以获得对应的结构体的大小,然后通过逆向调用那个DLL的EXE,获得结构体的具体信息。我弟弟在前面说过了。你没好好看。
WizardK 2010-02-11
  • 打赏
  • 举报
回复
没用的,我打个比方,原有DLL的某一个函数(比如两个参数)的某一参数是一个结构指针,另一个参数是VOID *,你当然能够知道函数名,但即便如此,你如何确定参数个数?如何确定这是第几个参数?如何确定这个结构原型?
Tr1j5n 2010-02-11
  • 打赏
  • 举报
回复
当然并不是上述方法万能,很多时候,需要逆向调用程序的调用方法,来判断DLL导出的形式
Tr1j5n 2010-02-11
  • 打赏
  • 举报
回复
D:\MyProj\Two\Bin>dumpbin /exports twotst.dll
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.


Dump of file twotst.dll

File Type: DLL

Section contains the following exports for TwoTst.dll

0 characteristics
424775A1 time date stamp Mon Mar 28 11:10:25 2005
0.00 version
1 ordinal base
1 number of functions
1 number of names

ordinal hint RVA name

1 0 00001060 ?TestA@@YAHH@Z

Summary

5000 .data
1000 .rdata
1000 .reloc
6000 .text

D:\MyProj\Two\Bin>undname -f ?TestA@@YAHH@Z
Microsoft(R) Windows NT(R) Operating System
UNDNAME Version 5.00.1768.1Copyright (C) Microsoft Corp. 1981-1998

>> ?TestA@@YAHH@Z == int __cdecl TestA(int)
WizardK 2010-02-11
  • 打赏
  • 举报
回复
引用 7 楼 tr1j5n 的回复:
引用 6 楼 wizardk 的回复:
引用 5 楼 tr0j4n 的回复:可以。 逆向

如何能够获取到参数个数和类型?我只知道能够获取到参数所占字节数而已
看经验


介是什么?马甲?
Tr1j5n 2010-02-11
  • 打赏
  • 举报
回复
引用 6 楼 wizardk 的回复:
引用 5 楼 tr0j4n 的回复:可以。 逆向

如何能够获取到参数个数和类型?我只知道能够获取到参数所占字节数而已

看经验
WizardK 2010-02-11
  • 打赏
  • 举报
回复
引用 5 楼 tr0j4n 的回复:
可以。
逆向


如何能够获取到参数个数和类型?我只知道能够获取到参数所占字节数而已
加载更多回复(1)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧