我有以下工作NASM代码:
global _start
section .text
_start:
mov eax, 0x4
mov ebx, 0x1
mov ecx, message
mov edx, 0xF
int 0x80
mov eax, 0x1
mov ebx, 0x0
int 0x80
section .data
message: db "Hello, World!", 0dh, 0ah
Run Code Online (Sandbox Code Playgroud)
在屏幕上打印"Hello,World!\n".我还有以下C包装器,其中包含以前的NASM对象代码:
char code[] =
"\xb8\x04\x00\x00\x00"
"\xbb\x01\x00\x00\x00"
"\xb9\x00\x00\x00\x00"
"\xba\x0f\x00\x00\x00"
"\xcd\x80\xb8\x01\x00"
"\x00\x00\xbb\x00\x00"
"\x00\x00\xcd\x80";
int main(void)
{
(*(void(*)())code)();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行代码时,似乎没有执行汇编程序代码,但程序退出正常.有任何想法吗?
谢谢
我在IDA注意到,我分析的PE文件不仅包括该.rdata部分,还包括.idata.有什么不同?
我正在编写的程序正在使用System.Management.Automation库来使用那里定义的powershell类和接口.这些库有两个版本:1.0.0.0和3.0.0.0.Windows Server 2008在其GAC版本1.0中,Windows Server 2012在其GAC中具有1.0和3.0.
为了能够在VS项目中使用此库,我必须引用它.现在这是一个决定,我应该参考哪一个?好吧,既然两台服务器的GAC都是1.0,那么引用1.0的服务器应该是安全的.不过,为了以防万一,我会在本地复制它,如果有一些罕见的(或常见的?)情况,它在GAC中不存在.
使用此库的示例代码:
using (PowerShell PS = PowerShell.Create())
{
PS.AddScript("Import-Module ServerManager")
.Invoke();
}
Run Code Online (Sandbox Code Playgroud)
该Import-Module Servermanager命令导致powershell导入另一个dll , Microsoft.Windows.ServerManager. 问题开始了.
Windows Server 2008只有此库的版本6.1.0.0,其中Windows Server 2012的版本为6.3.0.0.我假定那Automation的1.0〜6.1和3.0〜6.3版本相似度不巧合.
当我在Windows Server 2008上使用我的程序时,它工作正常,但当我尝试在Windows Server 2012上使用它时,此Automation 1.0程序集正在尝试加载2012年没有的ServerManager程序集版本6.1(!).2012年更愿意使用Automation assembly v3.0并加载ServerManager v6.3.
我假设有一些方法可以"告诉"程序加载程序集X,如果服务器版本Y和程序集A,如果服务器版本B,但它在哪里?我怎么能确定我不会遇到一些服务器,其中将有2.0或4.0或其他版本.
问题是我无法引用(本地复制)ServerManager程序集,因为(我认为),只要我能"告诉" 我的程序应该在哪里查找程序集,我无法告诉自动化程序集在何处查找其他组件.通过使用procmon进行分析,我可以看到它确切地知道在哪里寻找,因为它立即导航C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ServerManager到寻找ServerManager程序集.
我所知道的可能解决方案是:
我可以尝试动态加载程序集而不引用它们在视觉研究中使用Assembly.Load()和dynamic对象使用,如有人建议的那样,我应该在火热的地狱中燃烧(我假设那个人提到它非常容易出错).
我可以将我需要的程序集添加到GAC,但这可能导致一些依赖地狱,因为Automation和ServerManager可能有很多其他依赖项,我现在才发现其中的两个.
我还有其他选择吗?
我正在尝试使用masm而不是masm32库来创建helloworld程序.这是代码片段:
.386
.model flat, stdcall
option casemap :none
extrn MessageBox : PROC
extrn ExitProcess : PROC
.data
HelloWorld db "Hello There!", 0
.code
start:
lea eax, HelloWorld
mov ebx, 0
push ebx
push eax
push eax
push ebx
call MessageBox
push ebx
call ExitProcess
end start
Run Code Online (Sandbox Code Playgroud)
我可以使用masm组装它:
c:\masm32\code>ml /c /coff demo.asm
Microsoft (R) Macro Assembler Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
Assembling: demo.asm
Run Code Online (Sandbox Code Playgroud)
但是,我无法链接它:
c:\masm32\code>link /subsystem:windows /defaultlib:kernel32.lib /defaultlib:user
32.lib demo.obj
Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright …Run Code Online (Sandbox Code Playgroud) 我遇到了一些非常奇怪的事情,事情就是不加起来.首先,我在这里发布了这个,因为我不确定这是否与计算机病毒有任何关系.如果确实如此,请你指点我到一个寻求帮助的地方?
所以现在:
我在这里有一些奇怪的问题,我的反病毒和恶意软件标记代码*用masm和masm示例编译为病毒.我用谷歌搜索,发现这个问题已经发生过,所以我没有太认真对待这个问题,起初认为这是假阳性.
但是我编译了你在这篇文章底部看到的代码来测试我的其他一些东西.我通过ollydbg运行它(同时忽略了我的comodo反病毒)然后我看到了这个:
00401000 > -E9 FBEF6F71 JMP 71B00000 ; this is a weird jump I did not put there
00401005 90 NOP
00401006 8BC0 MOV EAX,EAX
00401008 . 8BD8 MOV EBX,EAX
0040100A . 33D9 XOR EBX,ECX
0040100C . 8BC3 MOV EAX,EBX
0040100E . 03CB ADD ECX,EBX
00401010 . 33C3 XOR EAX,EBX
00401012 . 2BC1 SUB EAX,ECX
00401014 . 8BCB MOV ECX,EBX
00401016 . 33D9 XOR EBX,ECX
Run Code Online (Sandbox Code Playgroud)
下面的代码不可能编译成跳转,所以我正在踩到代码.过了一会儿,我看到奇怪的代码开始通过ntdll.dll库中的api进行枚举.发生了什么?如果这确实是病毒在哪里得到帮助?
但我仍然不确定,comodo和malwarebytes都只将示例标记为病毒,而不将文件(test.exe)标记为病毒
我用来测试的测试代码......
*:include\masm32\include\masm32rt.inc
.data
.code
Start:
nop
nop
nop
nop
nop …Run Code Online (Sandbox Code Playgroud) 我们使用gdb调试器来读取汇编函数.
在装配中,我们有以下说明:
mov 0xc(%rsp),%eax
jmpq *0x402390(,%rax,8)
在内存位置,*0x402390我们有价值0x8e.在寄存器rax中,我们有这个特定函数的第二个整数输入(可以使用变量y).
从我们的分析,我们推断,该功能只在三个变量(x, y, z),他们可以在存储位置找到(rsp),(rsp + 8),(rsp + 12)分别.
我们想知道发生了什么jmpq *0x402390(,%rax,8).是跳到指令(0x8e + rax*8)吗?如果是这样,我们如何才能找出该指令的名称?
这是函数phase_3的汇编代码的完整转储:

Google 表格中的新函数插入 > 图像 > 单元格中的图像将图像插入单元格中,而不是作为 OverGridImage。我想以这种方式插入图像,然后从 Google Apps 脚本访问图像。这可能吗?
插入图像后,选择单元格时,单元格的公式为空白。我尝试搜索 GAS 参考资料,但找不到有关此相对较新功能的任何信息。有关于过网格图像的信息。我希望内嵌图像具有类似的功能。
我试过这样的事情:
// See what information is available on a cell with inserted image:
var image = sheet.getRange(1, 1).getFormula();
Logger.log(image);
Run Code Online (Sandbox Code Playgroud)
日志显示为空。我尝试了几个:.getImage()(不存在)、.getValue()、.getFormula()
我希望能够以某种方式访问图像 URL 或 Blob。
我在微处理器类中,我们在飞思卡尔CodeWarrior中使用汇编语言来编程68HCS12微控制器.本周我们的任务是反转一个字节,所以如果字节是00000001,输出将是10000000,或者是00101011到11010100.我们必须使用汇编语言,并被告知我们可以使用旋转和移位(但不限于! )完成这项任务.我真的不知道应该从哪里开始.
我正在尝试调试我在Ubuntu中编写的一个小.asm文件.然而,我遇到了一个问题,我的符号表没有被加载,正在寻找一些帮助.
我正在编译我的程序如下.
nasm -f elf -g -F dwarf bs.asm
gcc -m32 -g bs.o -o bs
Run Code Online (Sandbox Code Playgroud)
我跑的时候产生可执行的bs
gdb bs
Run Code Online (Sandbox Code Playgroud)
我收到一条消息说没有调试符号,当我尝试设置一个断点时
b main
Run Code Online (Sandbox Code Playgroud)
它说功能没有定义,即使它在文件中,我可以使用./bs运行它
我阅读了一些帖子,建议在组装时添加-F矮人,但如果有人有任何见解这没有帮助我会非常感谢你的输入.