edx

关于汇编语言

孤街浪徒 提交于 2021-02-17 19:42:14
学习编程其实就是学高级语言,即那些为人类设计的计算机语言。 但是,计算机不理解高级语言,必须通过编译器转成二进制代码,才能运行。学会高级语言,并不等于理解计算机实际的运行步骤。 计算机真正能够理解的是低级语言,它专门用来控制硬件。汇编语言就是低级语言,直接描述/控制 CPU 的运行。如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言。 汇编语言不容易学习,就连简明扼要的介绍都很难找到。下面我尝试写一篇最好懂的汇编语言教程,解释 CPU 如何执行代码。 一、汇编语言是什么? 我们知道,CPU 只负责计算,本身不具备智能。你输入一条指令(instruction),它就运行一次,然后停下来,等待下一条指令。 这些指令都是二进制的,称为操作码(opcode),比如加法指令就是00000011。编译器的作用,就是将高级语言写好的程序,翻译成一条条操作码。 对于人类来说,二进制程序是不可读的,根本看不出来机器干了什么。为了解决可读性的问题,以及偶尔的编辑需求,就诞生了汇编语言。 汇编语言是二进制指令的文本形式,与指令是一一对应的关系。比如,加法指令00000011写成汇编语言就是 ADD。只要还原成二进制,汇编语言就可以被 CPU 直接执行,所以它是最底层的低级语言。 二、来历 最早的时候,编写程序就是手写二进制指令,然后通过各种开关输入计算机,比如要做加法了

【WP】MOCTF-逆向-writeup(下)

时光总嘲笑我的痴心妄想 提交于 2021-02-15 06:31:56
MOCTF 逆向题 writeup moctf平台: http://www.moctf.com/challenges 后两道题的 writeup,写完后就安心去做 160个crackme了,嗯,感觉通过前几个进步还挺大的 moctf 逆向第四题:crackme1 打开后啥都不要求输入,出现一串字符,说是 flag,但是每次打开都不一样 载入 OD,通过字符串找到 但是因为不知道该怎么分析,干脆直接段首下断,然后单步跟踪 找到算法部分,算法: 逐个取定义好的“2410488” 乘以 2 后减去 60 (十六进制) 除以 4 之后加上 3 对 10 取余,得到结果 在刚开始一直不知道这里的数是怎么出来的,在心里把[edx+edx-0x60]当作一个地址了,后来发现,这他妈的不是存放的刚赋值的字符嘛!! 写出脚本,跑出 flag:4533577 flag:moctf{4533577} moctf 逆向第五题:crackme2 通过字符串定位获取输入的位置 然后按步跟踪找到加密函数 步入加密 CALL,分析算法: 依次取输入的字符串 从6开始,与输入的字符串进行异或 异或结果与定义好的字符串进行比较 红框圈出来的是定义好的字符串 0<1<>;?8:%w!##&#q./,x(,(( 下面的那个 CALL 是进行对比的 可以看到我们输入的进行加密后是 7F,而规定的应该是31

BUUCTF-writeup

独自空忆成欢 提交于 2021-02-14 11:12:00
Reverse RSA 使用openssl模块 rsa -pubin -text -modulus -in pub.key得到n值,在 factordb.com上 分解大素数得到p,q值,脚本生成 private.pem。 # coding=utf-8 import math import sys from Crypto.PublicKey import RSA keypair = RSA.generate(1024 ) keypair.p = 2859604688904516379356294403726392834xx keypair.q = 3040087416046019244943281559752724184xx keypair.e = 65537 keypair.n = keypair.p Qn = long((keypair.p - 1) * (keypair.q - 1 )) i = 1 while (True): x = (Qn * i) + 1 if (x % keypair.e == 0): keypair.d = x / keypair.e break i += 1 private = open( ' private.pem ' , ' w ' ) private.write(keypair.exportKey()) private.close()

buuoj Pwn writeup 21-30

喜夏-厌秋 提交于 2021-02-08 09:34:38
21 ciscn_2019_ne_5 保护 这个地方的strcpy函数,一看就估摸着有问题。 他把src那块的东西复制到了dest 但是你会发现 dest那里 0x48 但是你是可以往src那里输入东西的。 一口气能输128个字节,那这就造成了溢出。 那再说怎么利用 这个地方首先要注意他这里没有/bin/sh,但是有sh 而且还非常隐蔽 所以呢咱们这边推荐之后/bin/sh跟sh的搜索都用ROPgadget。 非常的nice 然后程序里面本来就有system函数,然后就一把梭。 exp from pwn import * context ( log_level = 'debug' ) proc_name = './2019' p = process ( proc_name ) # p = remote('node3.buuoj.cn', 29868) elf = ELF ( proc_name ) system_addr = elf . sym [ 'system' ] main_addr = elf . sym [ 'main' ] sh_str = 0x80482ea p . sendlineafter ( 'password:' , 'administrator' ) p . recv ( ) p . sendline ( '1' ) p . recvuntil (

x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式

岁酱吖の 提交于 2021-02-06 21:08:06
[toc] x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式 ##一丶x86指令复习. ###1.1什么是x86指令. 代码如下. 高级代码为: int i = 0; int *p - &i; 此时产生了3条汇编指令 mov dword ptr[i],0 OPCODE = C7 45 F4 00 00 00 00 lea eax,[i] mov dword ptr [p],ea OPCODE = 89 45 E8 此时观察,有两条 Mov 指令. 但是机器码却不同.这个就是我们今天要讲的. ###1.2 x86与x64下的通用寄存器 在x86下面,我们的通用寄存器有 eax ebx ecx edx esi edi esp ebp [e 代表 Extend(扩展)] 在x64下面,新加了几个寄存器.并且指令变大了 有16个通用寄存器 rax rbx rcx rdx rsi rdi rsp rbp r8 r9 r10 r11 r12 r13 r14 15 在x86下,我们的寄存器都有自己的编号. 指令 编号 eax 000 ecx 001 edx 010 ebx 011 esp 100 ebp 101 esi 110 edi 111 ###1.3 OpCode 每个指令都有一个或者多个编码. 如下常见的 指令 OpCode 说明 ret 0xC3 返回 short jump

x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式

旧街凉风 提交于 2021-02-06 17:48:31
[toc] #x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式 ##一丶x86指令复习. ###1.1什么是x86指令. 代码如下. 高级代码为: int i = 0; int *p - &i; 此时产生了3条汇编指令 mov dword ptr[i],0 OPCODE = C7 45 F4 00 00 00 00 lea eax,[i] mov dword ptr [p],ea OPCODE = 89 45 E8 此时观察,有两条 Mov 指令. 但是机器码却不同.这个就是我们今天要讲的. ###1.2 x86与x64下的通用寄存器 在x86下面,我们的通用寄存器有 eax ebx ecx edx esi edi esp ebp [e 代表 Extend(扩展)] 在x64下面,新加了几个寄存器.并且指令变大了 有16个通用寄存器 rax rbx rcx rdx rsi rdi rsp rbp r8 r9 r10 r11 r12 r13 r14 15 在x86下,我们的寄存器都有自己的编号. 指令 编号 eax 000 ecx 001 edx 010 ebx 011 esp 100 ebp 101 esi 110 edi 111 ###1.3 OpCode 每个指令都有一个或者多个编码. 如下常见的 指令 OpCode 说明 ret 0xC3 返回 short

MOCTF RE 暗恋的烦恼

余生颓废 提交于 2021-02-03 09:05:07
在moctf平台上,一道逆向题目很有意思,记录一下:  文件链接:http://119.23.73.3:6001/re4/jiamiqi.exe jiamiqi.exe文件执行效果: 执行到这里可以发现了,加密器输出的密文长度和明文长度是一致的,并且不加密空格。后面我们再去详细验证。 拖入IDA pro静态分析: 找到main函数,双击进入 再次双击,跳转 main函数反汇编代码: . text: 00401340 var_50 = byte ptr -50h . text: 00401340 var_10 = dword ptr -10h . text: 00401340 var_C = dword ptr -0Ch . text: 00401340 var_8 = dword ptr - 8 . text: 00401340 Str = dword ptr - 4 . text: 00401340 . text: 00401340 push ebp . text: 00401341 mov ebp, esp . text: 00401343 sub esp, 50h . text: 00401346 push ebx . text: 00401347 push esi . text: 00401348 push edi . text: 00401349 lea edi,

[系统安全] 十四.熊猫烧香病毒IDA和OD逆向分析--病毒释放过程(下)

拈花ヽ惹草 提交于 2021-01-09 09:27:19
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~ 如果你想成为一名逆向分析或恶意代码检测工程师,或者对系统安全非常感兴趣,就必须要认真分析一些恶意样本。熊猫烧香病毒就是一款非常具有代表性的病毒,当年造成了非常大的影响,并且也有一定技术手段。本文主要学习姜晔老师视频,结合作者逆向经验进行总结,详细讲解了熊猫烧香的行为机理,并通过软件对其功能行为进行分析,这将有助于我们学习逆向分析和反病毒工作。后续作者还将对其进行逆向调试,以及WannaCry勒索蠕虫、各种恶意样本及木马的分析。基础性文章,希望您喜欢! IDA和OD作为逆向分析的“倚天剑和“屠龙刀”,学好它们的基本用法至关重要。本文重点分析熊猫烧香病毒的功能函数,大家掌握这些技巧后才能更好地分析更多的代码。同时,本文部分实验参考姜晔老师的视频分析,真的非常佩服和值得去学习的一位老师。技术路上哪有享乐,为了提升安全能力,别抱怨,干就对了~ 上一篇文章讲解了

[系统安全] 十三.熊猫烧香病毒IDA和OD逆向分析(中)病毒释放机理

拈花ヽ惹草 提交于 2021-01-08 10:46:47
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~ 如果你想成为一名逆向分析或恶意代码检测工程师,或者对系统安全非常感兴趣,就必须要认真分析一些恶意样本。熊猫烧香病毒就是一款非常具有代表性的病毒,当年造成了非常大的影响,并且也有一定技术手段。本文将详细讲解熊猫烧香的行为机理,并通过软件对其功能行为进行分析,这将有助于我们学习逆向分析和反病毒工作。后续作者还将对其进行逆向调试,以及WannaCry勒索蠕虫、各种恶意样本及木马的分析。基础性文章,希望您喜欢! IDA和OD作为逆向分析的“倚天剑和“屠龙刀”,学好它们的基本用法至关重要。本文重点分析熊猫烧香病毒的功能函数,大家掌握这些技巧后才能更好地分析更多的代码。同时,本文部分实验参考姜晔老师的视频分析,真的非常佩服和值得去学习的一位老师。技术路上哪有享乐,为了提升安全能力,别抱怨,干就对了~ 上一篇文章讲解了“熊猫烧香”病毒样本的反汇编代码入口处的分析

[系统安全] 十三.熊猫烧香病毒IDA和OD逆向分析(中)病毒释放机理

|▌冷眼眸甩不掉的悲伤 提交于 2021-01-08 08:54:58
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~ 如果你想成为一名逆向分析或恶意代码检测工程师,或者对系统安全非常感兴趣,就必须要认真分析一些恶意样本。熊猫烧香病毒就是一款非常具有代表性的病毒,当年造成了非常大的影响,并且也有一定技术手段。本文将详细讲解熊猫烧香的行为机理,并通过软件对其功能行为进行分析,这将有助于我们学习逆向分析和反病毒工作。后续作者还将对其进行逆向调试,以及WannaCry勒索蠕虫、各种恶意样本及木马的分析。基础性文章,希望您喜欢! IDA和OD作为逆向分析的“倚天剑和“屠龙刀”,学好它们的基本用法至关重要。本文重点分析熊猫烧香病毒的功能函数,大家掌握这些技巧后才能更好地分析更多的代码。同时,本文部分实验参考姜晔老师的视频分析,真的非常佩服和值得去学习的一位老师。技术路上哪有享乐,为了提升安全能力,别抱怨,干就对了~ 上一篇文章讲解了“熊猫烧香”病毒样本的反汇编代码入口处的分析