- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个编译器,并开始了代码生成部分。基于我使用 fasm 编译的简单可执行文件,我开始使用 Python 进行导入的代码生成。
这是Assembly中测试程序的源代码:
format PE console
entry start
include 'win32a.inc'
macro import_part1 library, [api]
{
common
library#_str: db `library
forward
if rva $ mod 2 = 0
; db 0
end if
; When align is right, one byte from previous import name
; is used as byte for next import's hint.
api#_str = $-1
db 0, `api
common
db 0
}
import_part2_first = 0
macro import_part2 library, [api]
{
common
if import_part2_first = 0
align 4
import_part2_first = 1
else
dd 0
end if
library#_import:
forward
api dd rva api#_str
}
macro import_part3 [library]
{
common
data import
forward
dd 0, 0, 0, rva library#_str, rva library#_import
common
rd 5
end data
}
import_list equ
import_libraries equ
macro import library,[api]
{
common
import_list equ import_list import_#library
import_#library equ library,api
import_libraries equ import_libraries,library
}
macro importend
{
match a, import_list
\{
irps b, a \\{ match c, b \\\{ import_part1 c \\\} \\}
irps b, a \\{ match c, b \\\{ import_part2 c \\\} \\}
\}
match =,a,import_libraries \{ import_part3 a \}
}
start:
push var
call [printf]
push 0
call [ExitProcess]
var db 'Test', 0
;data import
;
;library kernel32, 'kernel32.dll', msvcrt, 'msvcrt.dll'
;
;import kernel32, ExitProcess, 'ExitProcess'
;import msvcrt, printf, 'printf'
;end data
import kernel32.dll, ExitProcess, AttachConsole
import msvcrt.dll, printf, scanf, puts
import user32.dll, MessageBoxA
importend
(OllyDbg)这是我用来生成导入的部分(我无法发布图像):
CPU Disasm
Address Hex dump Command Comments
00401017 . 006B 65 ADD BYTE PTR DS:[EBX+65], CH
0040101A . 72 6E 65 6C 33 32 2E 64 6C 6C 00 ASCII "rnel32.dll",0 ; ASCII "rnel32.dll"
00401025 . 45 78 69 74 50 72 6F 63 65 73 73 00 ASCII "ExitProcess",0 ; ASCII "ExitProcess"
00401031 . 41 74 74 61 63 68 43 6F 6E 73 6F 6C 65 00 ASCII "AttachConsole",0 ; ASCII "AttachConsole"
0040103F . 6D 73 76 63 72 74 2E 64 6C 6C 00 ASCII "msvcrt.dll",0 ; ASCII "msvcrt.dll"
0040104A . 70 72 69 6E 74 66 00 ASCII "printf",0 ; ASCII "printf"
00401051 . 73 63 61 6E 66 00 ASCII "scanf",0 ; ASCII "scanf"
00401057 . 70 75 74 73 00 ASCII "puts",0 ; ASCII "puts"
0040105C . 75 73 65 72 33 32 2E 64 6C 6C 00 ASCII "user32.dll",0 ; ASCII "user32.dll"
00401067 . 4D 65 73 73 61 67 65 42 6F 78 41 00 ASCII "MessageBoxA",0 ; ASCII "MessageBoxA"
00401073 90 NOP
Here is the problem:
00401074 . 647FA577 DD 77A57F64 -> ExitProcess
00401078 . 1878A577 DD 77A57818
0040107C . 00000000 DD 00000000
00401080 . C4D2B777 DD 77B7D2C4
00401084 . BF16C077 DD 77C016BF
00401088 . 9C3BC077 DD 77C03B9C
0040108C . 00000000 DD 00000000
00401090 . 9E278B77 DD 778B279E
00401094 . 00000000 DD 00000000 ; Struct 'IMAGE_IMPORT_DESCRIPTOR'
00401098 . 00000000 DD 00000000
0040109C . 00000000 DD 00000000
004010A0 . 18100000 DD 00001018
004010A4 . 74100000 DD 00001074
004010A8 . 00000000 DD 00000000 ; Struct 'IMAGE_IMPORT_DESCRIPTOR'
004010AC . 00000000 DD 00000000
004010B0 . 00000000 DD 00000000
004010B4 . 3F100000 DD 0000103F
004010B8 . 80100000 DD 00001080
004010BC . 00000000 DD 00000000 ; Struct 'IMAGE_IMPORT_DESCRIPTOR'
004010C0 . 00000000 DD 00000000
004010C4 . 00000000 DD 00000000
004010C8 . 5C100000 DD 0000105C
004010CC . 90100000 DD 00001090
004010D0 . 00000000 DD 00000000 ; Struct 'IMAGE_IMPORT_DESCRIPTOR'
004010D4 . 00000000 DD 00000000
004010D8 . 00000000 DD 00000000
004010DC . 00000000 DD 00000000
004010E0 . 00000000 DD 00000000
这是我的程序输出:
kernel32.dll , 0
ExitProcess , 0
AttachConsole , 0
msvcrt.dll , 0
printf , 0
scanf , 0
puts , 0
user32.dll , 0
MessageBoxA , 0
90
-------------------
0x77a57f64
0x77a57818
0x0
0x77b7d2c4
0x77c016bf
0x77c03b9c
0x0
0x778b279e
-------------------
0x0
0x0
0x0
0x1018
0x1074
0x0
0x0
0x0
0x103f
0x1080
0x0
0x0
0x0
0x105c
0x1090
0x0
0x0
0x0
0x0
0x0
生成的文件:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 6B 65 72 6E 65 6C 33 32 2E 64 6C 6C 00 45 78 69 kernel32.dll.Exi
00000010 74 50 72 6F 63 65 73 73 00 41 74 74 61 63 68 43 tProcess.AttachC
00000020 6F 6E 73 6F 6C 65 00 6D 73 76 63 72 74 2E 64 6C onsole.msvcrt.dl
00000030 6C 00 70 72 69 6E 74 66 00 73 63 61 6E 66 00 70 l.printf.scanf.p
00000040 75 74 73 00 75 73 65 72 33 32 2E 64 6C 6C 00 4D uts.user32.dll.M
00000050 65 73 73 61 67 65 42 6F 78 41 00 90 64 7F A5 77 essageBoxA..d.¥w
00000060 18 78 A5 77 00 00 00 00 C4 D2 B7 77 BF 16 C0 77 .x¥w....ÄÒ·w¿.Àw
00000070 9C 3B C0 77 00 00 00 00 9E 27 8B 77 00 00 00 00 œ;Àw....ž'‹w....
00000080 00 00 00 00 00 00 00 00 00 00 00 00 18 10 00 00 ................
00000090 74 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 t...............
000000A0 3F 10 00 00 80 10 00 00 00 00 00 00 00 00 00 00 ?...€...........
000000B0 00 00 00 00 5C 10 00 00 90 10 00 00 00 00 00 00 ....\...........
000000C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
这是十六进制编辑器中测试程序的导入部分:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000210 6B 65 72 6E 65 6C 33 32 kernel32
00000220 2E 64 6C 6C 00 45 78 69 74 50 72 6F 63 65 73 73 .dll.ExitProcess
00000230 00 41 74 74 61 63 68 43 6F 6E 73 6F 6C 65 00 6D .AttachConsole.m
00000240 73 76 63 72 74 2E 64 6C 6C 00 70 72 69 6E 74 66 svcrt.dll.printf
00000250 00 73 63 61 6E 66 00 70 75 74 73 00 75 73 65 72 .scanf.puts.user
00000260 33 32 2E 64 6C 6C 00 4D 65 73 73 61 67 65 42 6F 32.dll.MessageBo
00000270 78 41 00 90 23 10 00 00 2F 10 00 00 00 00 00 00 xA..#.../.......
00000280 48 10 00 00 4F 10 00 00 55 10 00 00 00 00 00 00 H...O...U.......
00000290 65 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e...............
000002A0 18 10 00 00 74 10 00 00 00 00 00 00 00 00 00 00 ....t...........
000002B0 00 00 00 00 3F 10 00 00 80 10 00 00 00 00 00 00 ....?...€.......
000002C0 00 00 00 00 00 00 00 00 5C 10 00 00 90 10 00 00 ........\.......
000002D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
我不明白的是为什么 OllyDbg 和十六进制编辑器中的某些字节不同?我还需要做一些计算吗?
最佳答案
Here is the problem:
00401074 . 647FA577 DD 77A57F64 -> ExitProcess
00401078 . 1878A577 DD 77A57818
没问题。
在左列(转储)中,字节按照它们在内存中的顺序排列。所以先低字节。
最后一列(命令)显示与双字相同的 4 个字节,但它没有添加常见的前缀 0x 或后缀 h。
关于c - 十六进制编辑器和 OllyDbg 中的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30018559/
如何使用 ollydbg 为按钮单击设置断点? 我正在尝试禁用游戏客户端上的按钮单击,因此我想设置断点以捕获按钮单击事件。 ollydbg 有可能发生这种情况吗? 最佳答案 让应用程序制作窗口和按钮然
我正在分析 ollydbg 中的程序,一些指令被反汇编为 [ARG.1],例如: MOV ESI,[ARG.1] 我尝试在汇编书籍中搜索此命令,但似乎它仅用于 ollydbg 而不是标准汇编代码。 我
我在注册窗口中双击EIP,但似乎无法编辑。 为什么EIP很特别?如何更改? 最佳答案 找到您要将EIP设置为的位置,右键单击并选择“此处新建来源”。这会将EIP重置为新地址。您可以通过检查右上角的寄存
每当我在 OllyDbg 中并根据自己的喜好成功完成 ASM 代码编辑时,我都会尝试突出显示我所做的所有修改,当我右键单击时......我没有看到“复制”选项到可执行文件?” - 然而我关注的很多教程
这是我的第一篇文章,我是汇编和调试的新手,所以请多多包涵。 我试图将一些代码(对 MessageBoxA 的一点调用)注入(inject)到 Windows 7 记事本可执行文件中。但是,我遇到了地址
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
是否有一个选项我可以选择如何启动 动态链接库 (比如在 Visual Studio 中调试 dll 项目时)? 当我放弃 时,我觉得动态链接库 进入 OD,我唯一的选择是通过 LOADDLL.EXE
我一直在想-一个如何反汇编自修改二进制文件?我猜您不能使用olly或IDA,因为它们是静态反汇编程序,对吗?如果您跳到指令的中间,反汇编器会发生什么?以及如何分析变质引擎? 最佳答案 OllyDbg和
我正在调试一个进程,想要将一 block 内存(例如从内存地址 0x4160d8 到 0x4200d8)转储到文件中。 如何获得仅包含字节的原始文件?我尝试使用 OllyDump 插件,但它创建了一个
我正在尝试创建一个编译器,并开始了代码生成部分。基于我使用 fasm 编译的简单可执行文件,我开始使用 Python 进行导入的代码生成。 这是Assembly中测试程序的源代码: format PE
这是我的 C++ 代码: #include #include using namespace std; void func1() { static int _count = 0;
我正在尝试识别程序(32 位)中可能导致代码执行的错误。到目前为止,我使用 ollydbg 调试了应用程序并运行了我的漏洞利用代码。然后 ollydbg 给了我一个异常(exception)。 如果我
我的简单理解是 OllyDbg 是一个用户模式调试器,你可以用它来调试“普通”应用程序。 WinDbg 是内核模式调试器,您可以使用它来调试自身。 那正确吗? 最佳答案 WinDbg 是由 Micro
我最近在 OllyDbg 2.01 和crackmes 可执行文件的帮助下进行了破解和逆向工程。 所以在这个特定的破解版中,我正在滚动命令并注意到一个带有 ASCII 字符串“&File”(它是一个菜
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 个月前。 Improve this q
IDA Pro 是否具有类似于 OllyDbg 中的内存映射功能?如果是这样,我找不到它。我知道屏幕顶部有一个细条,显示您在地址空间中的位置以及内存分配的位置,但我认为这种方式不够充分。 OllyDb
如果我的产品 MyApp.exe 正在被 OllyDbg(或任何其他调试器)调试,但 exe 启动另一个(例如 MakeSerial.exe); OllyDbg 也会开始调试新启动的 exe 吗?还是
我非常简单的测试程序 #include #include int main() { int a = 12345; printf("%d\n", a); system("PAUSE"); return
每次我尝试使用 OllyDbg 1.10(在 Windows 7 32 位上)调试某些东西时,它都会无缘无故地抛出异常。我用 Shift + F7/F8/F9 跳过它们, 最后它抛出一个异常 EIP
我刚刚用这个简单的代码创建了一个新的 vc++ exe: #include #include #include int ExceptionHandler(void); int main(int arg
我是一名优秀的程序员,十分优秀!