m*p 发帖数: 1331 | 1 如何提取一个executable的所有dependency, e.g. dll?
目的是为了能够在另一台电脑上精确的run这个exe. | a****l 发帖数: 8211 | 2 I don't think it is possible with 100% accuracy. One can easily create an
executable that is mathematically impossible to infer the dependency.
【在 m*p 的大作中提到】 : 如何提取一个executable的所有dependency, e.g. dll? : 目的是为了能够在另一台电脑上精确的run这个exe.
| M*********t 发帖数: 257 | 3 check this out
www.dependencywalker.com
I do not know how though
if yo ask me to write a C++ function to print out
the list of all dependencies
【在 m*p 的大作中提到】 : 如何提取一个executable的所有dependency, e.g. dll? : 目的是为了能够在另一台电脑上精确的run这个exe.
| x****u 发帖数: 44466 | 4 展开讲讲,动态加载的不算的话。
【在 a****l 的大作中提到】 : I don't think it is possible with 100% accuracy. One can easily create an : executable that is mathematically impossible to infer the dependency.
| m*p 发帖数: 1331 | 5 hey, guys, actually our company is gonna buy a license of this software,
which can do that precisely, quite amazing. I spent an hour observing and
can't figure out how they do it....
there is free license to play with.
http://www.xoreax.com/news/company_news066.htm | x****u 发帖数: 44466 | 6 这个东西无非是对PE做分析,找出所有的直接依赖来,然后再递归的找出间接依赖。对
COM什么的东西是无能为力的。
【在 m*p 的大作中提到】 : hey, guys, actually our company is gonna buy a license of this software, : which can do that precisely, quite amazing. I spent an hour observing and : can't figure out how they do it.... : there is free license to play with. : http://www.xoreax.com/news/company_news066.htm
| f******y 发帖数: 2971 | 7 sounds similar to ldd in linux. | m*p 发帖数: 1331 | 8 that's what I guess...
at the agent machine, i can only see the EST.exe running, which means this
software is able to obtain all exe+dll etc and wrap them up into one single
exe, which is so cool!
Why is not working with com?
【在 x****u 的大作中提到】 : 这个东西无非是对PE做分析,找出所有的直接依赖来,然后再递归的找出间接依赖。对 : COM什么的东西是无能为力的。
| a****l 发帖数: 8211 | 9 就是动态的有问题啊!静态的当然好找,搜一遍文件名字符串就出来了.动态的,如果编程
的人有意不让你知道调用的关系,可以用各种trick隐藏,就没那么好找了.所以说,这是
防君子不防小人.
【在 x****u 的大作中提到】 : 展开讲讲,动态加载的不算的话。
| x****u 发帖数: 44466 | 10 看了一下说明,dependency实际上还有个调试器,可以hook住dll加载的消息,得到更
完整的一张表。
single
【在 m*p 的大作中提到】 : that's what I guess... : at the agent machine, i can only see the EST.exe running, which means this : software is able to obtain all exe+dll etc and wrap them up into one single : exe, which is so cool! : Why is not working with com?
| x****u 发帖数: 44466 | 11 可以搞个调试器动态监测,为了防这个小trick就不太够了。
【在 a****l 的大作中提到】 : 就是动态的有问题啊!静态的当然好找,搜一遍文件名字符串就出来了.动态的,如果编程 : 的人有意不让你知道调用的关系,可以用各种trick隐藏,就没那么好找了.所以说,这是 : 防君子不防小人.
| a****l 发帖数: 8211 | 12 是的,调试器会更有效的,但是也不是没办法的.比如说,随便弄10个DLL,然后用机器的
serial number产生一个hash,根据结果调用其中一个DLL,这样一来你调试的时候能看到
调用了哪个,结果移植到另一台机器上就是missing dll crash了.如果我把这几个文件
分散到不同的目录中,然后靠计算产生目录的名字,你就不那么好找了.然后你可能发现
移植的机器10台中随机的有一两台怎么都不好使,这就是tricks的目的:让随便不经允许
就移植的人的日子难过.
【在 x****u 的大作中提到】 : 可以搞个调试器动态监测,为了防这个小trick就不太够了。
| m*p 发帖数: 1331 | 13 it's already done, i found matlab can't be distributed into agents.
【在 a****l 的大作中提到】 : 是的,调试器会更有效的,但是也不是没办法的.比如说,随便弄10个DLL,然后用机器的 : serial number产生一个hash,根据结果调用其中一个DLL,这样一来你调试的时候能看到 : 调用了哪个,结果移植到另一台机器上就是missing dll crash了.如果我把这几个文件 : 分散到不同的目录中,然后靠计算产生目录的名字,你就不那么好找了.然后你可能发现 : 移植的机器10台中随机的有一两台怎么都不好使,这就是tricks的目的:让随便不经允许 : 就移植的人的日子难过.
| x****u 发帖数: 44466 | 14 人家都是clean安装后比较目录的。
【在 a****l 的大作中提到】 : 是的,调试器会更有效的,但是也不是没办法的.比如说,随便弄10个DLL,然后用机器的 : serial number产生一个hash,根据结果调用其中一个DLL,这样一来你调试的时候能看到 : 调用了哪个,结果移植到另一台机器上就是missing dll crash了.如果我把这几个文件 : 分散到不同的目录中,然后靠计算产生目录的名字,你就不那么好找了.然后你可能发现 : 移植的机器10台中随机的有一两台怎么都不好使,这就是tricks的目的:让随便不经允许 : 就移植的人的日子难过.
|
|