我不太熟悉编译器魔法。将人类可读的代码(或不是真正可读的汇编指令)转换为机器代码的行为,对我来说,是结合魔法的火箭科学。我将把这个问题的主题缩小到Win32可执行文件(.exe)。当我在专门的查看器中打开这些文件时,我可以找到散落在不同地方的字符串(通常每个字符16b),但其余的只是垃圾。我想不可读的部分(大部分)是机器代码(或者可能是资源,例如图像等...)。有没有直接读取机器码的方法?将exe作为文件流打开并逐字节读取,如何将这些单独的字节转换为程序集?这些指令字节和汇编指令之间是否存在直接映射?.exe是怎么写的?每条指令四个字节?更多的?较少的?我注意到一些应用程序可以像那样创
我已授予以下权限,调用CMD.EXE似乎像下面的代码示例所示那样工作。但是,我无法从whoami.exe获得任何输出。我可以看到默认目录是出现在JJJ.TXT文件中的C:\app\oramgr\product\12.1.0\dbhome_1\database\。但是,JJJ_WHOAMI.TXT文件不包含任何内容。有什么建议吗?dbms_java.grant_permission('PWATSON','SYS:java.io.FilePermission','C:\WINDOWS\SYSTEM32\CMD.EXE','execute');dbms_java.grant_permissi
在DOS批处理文件中,在IF语句中,是否可以使用AND或OR组合两个或多个条件?我找不到相关的任何文档编辑-helpifMS文档没有说明在if中使用多个条件。我想AND的解决方法是ifCOND1(ifCOND2(cmd))但这正是我要避免的。 最佳答案 不,没有更简单的方法。对于和,您也可以将它们链接起来而不引入block:ifCOND1ifCOND2...坦率地说,这并不比ifCOND1andCOND2...然而,对于或它确实变得更丑陋:setCOND=ifCOND1setCOND=1ifCOND2setCOND=1ifdefin
我有几个按如下方式运行的.exe文件:publicvoidRunCalculator(Calculatorcalculator){varquery=Path.Combine(EpiPath,calculator.ExeName+".exe");if(File.Exists(Path.Combine(EpiPath,"ffs.exe"))){varp=newProcess();p.StartInfo.FileName=query;p.StartInfo.WorkingDirectory=EpiPath;p.StartInfo.WindowStyle=ProcessWindowStyle.
注意:这是一个question-with-answer为了记录其他人可能会觉得有用的技术,并可能了解其他人的更好解决方案。请随时添加评论或问题作为评论。也请随时添加其他答案。:)如何通过键入单个Windows命令显示消息框,例如在“开始”菜单的运行对话框中,或在[cmd.exe]命令解释器中? 最佳答案 一种方法是使用明显未记录的功能,即Windows.htaHTML应用程序的运行时引擎[mshta.exe]接受通用URL作为命令行参数,包括javascript:协议(protocol)网址:mshta"javascript:var
我已经搜索了很多周来解决我的问题,但找不到适用于我可能需要使用的每台机器的好方法。我知道START命令会打开一个新窗口来执行.exe,但我想留在同一个窗口中运行.exe(因为我希望我的批处理文件仅在.EXE完成运行时继续)我发现在某些计算机上,当我执行.exe时,它会打开一个新窗口,而其他计算机则停留在同一窗口中,这让我觉得我的代码没问题,但计算机上某处的设置不同。你能帮忙吗?我有哪些选择?我正在运行的.exe是NASTRAN,它是一个在命令窗口中运行的工程求解器。 最佳答案 要等待命令终止,您应该使用WAIT标志:start/
我想调用驻留在第3方.exe中的函数并获取其结果。似乎应该有办法,只要我知道函数地址、调用约定等...但我不知道怎么做。有人知道我该怎么做吗?我知道任何解决方案都是非标准的hack,但必须有办法!我的非恶意用例:我正在为我的软件逆向工程文件格式。这个函数中的计算太复杂了,我的小脑袋无法理解;我已经能够将汇编代码直接拉到我自己的DLL中进行测试,但我当然不能发布它,因为那样会被窃取。我假设用户已经预装了这个特定的应用程序,所以我的软件可以运行。 最佳答案 这是可能的,但并非微不足道。是的,这是一个非常肮脏的hack。在某些情况下,使用
所有关于如何创建编译器的文章在解释了词法分析器和解析器之后就停止了。他们没有解释如何创建机器代码。我想了解端到端流程。目前我的理解是,Windowsexe文件格式称为PortableExecutable。我阅读了它的标题,但尚未找到可以轻松解释这一点的资源。我的下一个问题是,我没有看到任何解释机器代码如何存储在文件中的资源。是不是像.text段中一个接一个存储的32位定长指令?是否有任何地方至少解释了如何创建一个什么都不做的exe文件(它有一个NoOp指令)。我的下一步是链接到dll文件以打印到控制台。 最佳答案 好问题!我对这个具
我知道如何启动manyotherprograms从批处理文件中,但我找不到像open这样的命令在MacOSX上。Windows上是否存在这样的工具?Powershell或来自可执行文件的WindowsAPI调用也可以。或者,换句话说,我如何从批处理文件或powershell脚本中为文件调用Windows默认的“打开”处理程序? 最佳答案 在Windows中,您可以使用以下命令打开资源管理器:C:\Users\Leniel>start%windir%\explorer.exe如果你想让它打开一个特定的文件夹,例如这样做:C:\User
我们有一个内部生成的DLL,并且我们有相关的stub静态LIB。我们还有一个EXE,它使用静态链接到DLL的LIB文件的简单方法来使用此DLL(即,不手动使用LoadLibrary)。当我们部署EXE时,我们希望出于混淆原因(应客户要求)更改DLL文件名。我们怎样做才能让我们的EXE仍然自动找到DLL?我曾尝试重命名DLL和LIB文件(在将它们构建为正常名称之后),然后更改EXE项目设置以与重命名的LIB链接。这在运行时失败了,因为我猜DLL的名称被烘焙到LIB文件中,而不是简单地由链接器将“.lib”替换为“.dll”猜测。一般来说,我们不想将这种混淆应用于DLL的所有使用,因此我们