我使用IDA Pro Advanced Edition v6.但我找不到字符串窗口.仅显示功能窗口,IDA View-A,IDA Hex View-A,Structures窗口,Enums窗口,Imports and Exports窗口.
有人可以告诉我如何打开字符串窗口吗?
我在C中编写了以下代码,以便从中创建汇编程序代码并学习汇编程序.
我当然从一个问候世界开始,在一行中,有以下内容:
mov DWORD PTR[esp], OFFSET FLAT:.LCO
Run Code Online (Sandbox Code Playgroud)
而且LC0,它说:
.string "Hello World!"
.text
.globl main
.type main,@function
Run Code Online (Sandbox Code Playgroud)
那么,我问自己,行的含义是什么OFFSET FLAT:.LCO?当我说,我是对的,就像指向字符串的指针一样esp?所以esp现在也指向字符串hello世界?
是对的吗?因为这是合乎逻辑的.
在shellcode教程中,我看到了以下示例:
main(){
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
想法是创建一个exit() - 系统调用.那么,他们生产组件:
Section .text
global _start
_start:
mov ebx, 0
mov eax, 1
int 0x80
Run Code Online (Sandbox Code Playgroud)
我理解这一点.0是我们存储在ebx中的exit()的参数,1是退出系统调用的编号,使用0x80我们将CPU更改为内核模式并执行系统调用.
之后,他们让我们生成以下代码:
bb 00 00 00 00
b8 01 00 00 00
cd 80
Run Code Online (Sandbox Code Playgroud)
然后,他们将其翻译成C语言,看起来像:
char example[] = "\xbb\x00\x00\x00\x00"
"\xb8\x01\x00\x00\x00"
"\xcd\x80"
int main(){
int *pointer;
pointer = (int *)&pointer+2;
(*pointer) = (int)example;
}
Run Code Online (Sandbox Code Playgroud)
所以,我理解的是他们将操作码放在char数组中,但我不明白他们在main()中做了什么 - 方法.第一行还可以.但他们想用第2和第3行表达什么?
最好的祝福,
我有以下情况:
public ArrayList<A> getMethods(){
return b.c.test();
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是b.c.test()返回一个Optional<A>返回类型的值.但我需要回归ArrayList<A>.
所以,我试图将其转换并重写为:
public ArrayList<A> getMethods(){
return (ArrayList<A>)b.c.test();
}
Run Code Online (Sandbox Code Playgroud)
但是Eclipse说,从这样的投Optional<A>来ArrayList<A>是不可能的.
我怎么解决这个问题?
对于练习,我看一下STARTUPINFO结构.如您所见,最后3个元素具有类型HANDLE.
所以我想知道它的大小HANDLE.有人知道大小HANDLE吗?
在模糊测试期间,测试的应用程序崩溃了,我得到了一个核心文件.用gdb打开核心文件后,它说应用程序没有调试符号.
backtrace命令显示以下内容:
Program terminated with signal 11, Segmentation fault.
#0 0x0000000000000000 in ?? ()
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x00007f8749f065d3 in ?? ()
#2 0x00007f874c6a9000 in ?? ()
#3 0x00007f8749f06568 in ?? ()
#4 0x00007f874c6ab9a0 in ?? ()
#5 0x00007f874c6aaa00 in ?? ()
#6 0x0000000000000001 in ?? ()
#7 0x00007f8749f06664 in ?? ()
#8 0x0000000000000000 in ?? ()
Run Code Online (Sandbox Code Playgroud)
所以,当我键入(gdb)disass 0x00007f8749f065d3,+ 1然后我得到以下输出:
Dump of assembler code from 0x7f8749f065d3 to 0x7f8749f065d4:
0x00007f8749f065d3: mov QWORD PTR [rbx+0x70],0x0
End …Run Code Online (Sandbox Code Playgroud) 我想了解有关堆栈的更多信息。特别是调用带有参数的函数时会发生什么。为此,我编写以下代码:
#include <stdio.h>
int sum(int d, int e, int f){
int result = d + e + f;
return result;
}
int main(void){
int a = 5;
int b = 4;
int c = 2;
int erg = sum(a,b,c);
printf("Result is: %d", erg);
}
Run Code Online (Sandbox Code Playgroud)
我得到以下汇编代码(我将仅添加main函数的一部分,因为首先我想了解本节):
push ebp,
mov ebp, esp
and esp, -16
sub esp, 32
mov DWORD PTR[esp+28], 5
mov DWORD PTR[esp+24], 4
mov DWORD PTR[esp+20], 2
mov eax, DWORD PTR[esp+20]
mov DWORD PTR[esp+8], eax
mov eax, …Run Code Online (Sandbox Code Playgroud) 我写了以下代码:
data Genre = Nonfiction | Novel | Biography deriving (Eq, Show)
type Name = (String, String)
type Date = (Int, Int, Int)
type Book = ABook Genre
Name
String
Date
Int
deriving Show
genre :: Book -> Genre
genre (ABook g _ _ _ _) = g
author :: Book -> Name
author (ABook _ a _ _ _) = a
title :: Book -> String
title (ABook _ _ t _ _) = t
date :: Book -> …Run Code Online (Sandbox Code Playgroud) 当我进行手术时
IDIV ecx
Run Code Online (Sandbox Code Playgroud)
在汇编中,然后我已阅读到edx:eax中的值除以操作数ecx。我也知道商存储在eax中,余数存储在edx中。
所以edx:eax中的值到底是什么?
有人可以向我解释吗?
编辑:尽管我已经阅读了一些有关此内容的页面,但我也不理解总是在IDIV操作之前进行“ cdq”操作的原因。
有人如何改变beanstalkd的最大作业大小?我有问题,我得到消息JOB_TOO_BIG和添加作业到beanstalkd,它说默认大小是65k.有人知道如何改变吗?
编辑:我的文件夹/etc/init.d中的beanstalkd初始化脚本如下所示(我添加了-z选项来增加作业大小):
#!/bin/sh
#
# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
#
# This is free software; you may redistribute it and/or modify
# it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2,
# or (at your option) any later version.
#
# This is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty …Run Code Online (Sandbox Code Playgroud)