这是一个非正统的问题.
我对使用IDA Pro有点新意.
有没有办法编辑汇编代码,然后让IDA将结果保存为可执行文件?
是否有某种插件可能那样做?因为似乎IDA不想保存为EXE.
或者我是否需要以其他方式手动编辑?
这是我偶尔遇到的情况:
对于不使用虚拟寻址的嵌入式系统,我有一个可执行文件,它是用C或C++代码编译的,包含调试信息.它通常在COFF或ELF/DWARF(我得到那两个混合)格式.
在运行时,在PC上,我想确定给定名称的变量的地址.(例如"foo.bar [7] .baz")这允许我在嵌入式系统上读/写变量的值(给定一个超出本问题范围的调试协议).显然,任何基于堆栈或基于堆的变量都没有,因为它们没有静态地址.
我之前在C++中已经完成了这项工作,用于解析TI编译器为其2800系列DSP编写的COFF文件,这有点痛苦.我想知道是否有一个Java库已经做了这种事情,因为我面对着一个或两个其他处理器的可执行文件.
更新:(11/18/2009)一个有希望的线索!
有没有人使用Eclipse CDT ELF解析器?
(见http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.cdt.doc.isv/reference/api/org/eclipse/cdt/core/model/IBinary.html一的javadoc pgs)
TI的Code Composer 4(基于Eclipse)似乎使用了这个,所以似乎我可以弄清楚文档的位置,也许我可以用它来解决我的问题.
使用Ant构建我的应用程序时,它会生成一个ZIP文件.
我sh在此zip文件中有一个文件,它包含在构建过程中.每次构建后我都必须这样做,chmod +x myFile.sh因为ant无法保留其原始的可执行权限.
如何指示ant为此文件保留可执行权限?
我试图测试Visual Studio从相同的代码生成可预测/可重复的可执行文件.
为此,我正在创建一个小程序(一个.cpp文件)并构建.exe(A),进行一些更改并制作另一个.exe(B),然后取消更改并制作另一个.exe( C).
我的理论是A和C的信息是相同的,并确认MSVS从相同的代码生成可预测/可重复的.exe.
几个问题:
(我已经在.txt中保存了命令的结果)
我已经使用dumpbin/rawdata来删除时间/日期戳数据并保存文件每个部分的原始内容(不完全确定"原始"意味着什么),但与windiff比较时留下2行差异.
运行dumpbin/headers显示调试目录下的.rdata部分(原始数据#2)的差异; 差异在时间(预期)和格式:X,{Y},"差异在这里",Z列.
我搜索论坛和msdn几个小时,无法找到使用dumpbin的解决方案.类似的论坛帖子以耸耸肩膀结束.
任何人都可以帮我一把吗?我会尽力按要求添加更多特异性.
谢谢你,ZayJay
已查看参考文献:
http://support.microsoft.com/kb/177429
http://support.microsoft.com/kb/164151
http://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx
http://www.ms-news.net/f3614/how-can-i-compare-2-executables-1980031.html
+其他...
此外,在我的.cpp和一个新的.cpp之间进行比较,主要只返回0,在同一区域产生差异.我希望dumpbin/headers结果的.text(原始数据#1)部分存在差异......任何阅读或直接答案的内容都会很棒!谢谢!
我想使用py2exe编译我的python程序使用pygame编译成可执行文件,但我遇到了一些问题.我在Windows命令行中运行脚本,它似乎工作.它创建一个dist目录但是当我尝试打开.exe文件时,它会短暂打开一个命令行窗口,然后不做任何事情.
这可能是因为我使用过pygame并且py2exe不支持它吗?或者我是否需要将pygame库的副本放入与我的程序相同的目录中?
我想通过导出在eclipse中创建一个包含引用库的可运行JAR,即jackson.在Eclipse提供导出到可运行的JAR之前,曾经有一个似乎是goto解决方案的胖jar.
从这个问题,第一个选择将是我正在寻找的.由于目前这是一个小项目,所以总是将所有东西放在一起并不是一个问题(而且对我来说更容易,因为我刚开始使用JAR,runnables和jnlp)
当我尝试启动它时,会出现一个警告窗口,说明存在问题并尝试在控制台中找到它(我无法打开它).
如果我删除对这个引用库的任何使用,一切都运行得很好(除了它根本不做我想要的部分).窗口看起来像我设计它的方式,但没有库的功能.
我甚至没有堆栈跟踪来帮助解决问题.我创建了没有任何引用库的其他项目,一切都很好.所以我几乎把它缩小了.
由于我让Eclipse处理导出和所有内容,我不认为你需要清单来查看它是否正常.如果您有任何问题,我将提供您需要的信息.毫无疑问,该项目直接从Eclipse运行.
Eclipse版本:Indigo Service Release 2 Build id:20120216-1857
按照巴克塔的回答编辑
当我这样做时会发生什么,我得到一个自定义的RuntimeException.我在这里有点困惑.这是我的代码的简单解释.我有一个使用引用库(jackson)的实用程序类(UtilityJSON).该实用程序类的构造函数实例化在引用的库中定义的对象,让我们将其称为映射器.UtilityJSON的方法使用'mapper'方法.此时引发异常.为什么我感到困惑的是'mapper'被成功实例化,但使用它的方法会引发异常.如果jar找不到引用的库,它可能无法创建对象'mapper'.但是从Eclipse运行项目一切都很好.运行可执行jar时有没有办法调试?也许在控制台中回应一些东西.
编辑2
我可能发现了错误.我的程序读取项目内文件夹中的*.txt文件.在探索jar的内容时,我看到该文件夹未包含在内,因此异常.所以问题现在变成:我如何包含这个文件夹?它位于项目的根文件夹中.
我有一个关于一个主题的快速提问,我对此非常不满意.我有一个程序,它发送命令到另一个.exe在我称为"工具"的文件夹中.我以这种格式发送:
system("tools\\program.exe -r -w file.dat file_new.dat");
Run Code Online (Sandbox Code Playgroud)
一切都很好,但是,当我将程序构建到.exe中时,显然需要将其他可执行文件放在第二个文件夹中.有没有办法将外部.exe包含到我的项目中,所以最终产品只有一个.exe?
我正在使用Visual Studio 2008(lol)并运行Windows 7 64位.
谢谢 :)
我在64位Windows 7机器上,我一直PAR:Packager用来打包我的脚本.exe.
但是,我现在需要.exe在32位Windows 7机器上运行这些.
无论如何将它打包为64位机器的32位可执行文件?(有可能PAR:Packager吗?)
我已经从头开始创建了一种编程语言.我已经构建了一个编译器,它处理输入文件中的代码并将其转换为标记,并检查标记的顺序是否正确.我正处于编译器的最后一步:输出/可执行文件.我想创建一个可以在终端中运行的输出.我想创建一个a.out输出,但我能找到的唯一资源是来自nasm,这对我没有帮助.
所以我的问题是,如何创建一个可以在终端中运行的a.out文件(unix可执行文件)?
我想使用cx_freeze编译带有子模块的Python 3.3模块.
所以,我的dir结构是:
projectname/
__init__.py
submodule1/
__init__.py
bootstrap.py
script1.py
submodule11/
script2.py
submodule2/
...
Run Code Online (Sandbox Code Playgroud)
在__init__.py我导入
from submodule1 import bootstrap
Run Code Online (Sandbox Code Playgroud)
并从引导程序
import submodule1.submodule11.script2
Run Code Online (Sandbox Code Playgroud)
如果我运行init文件,一切都很好,并且正确执行带有子模块导入的脚本.
当我编译它时,我使用这个setup.py:
from cx_Freeze import setup,Executable
import sys
includes = []
excludes = ['Tkinter']
packages = ['submodule1', 'submodule2']
base = "Win32GUI"
setup(
name = 'myapp',version = '0.1',description = 'app',author = 'user',
options = {'build_exe': {'excludes':excludes,'packages':packages}},
executables = [Executable('__init__.py',base=base)]
)
Run Code Online (Sandbox Code Playgroud)
并在'projectname'目录中运行脚本.
但是,如果我启动应用程序,我会ImportError: no module named 'submodule1.submodule11'从错误对话框中获取.
这是真的:在library.zip中,这个子模块不存在.
我做错了什么?