首页 > 其他分享 >花指令(例题)

花指令(例题)

时间:2023-12-17 13:33:26浏览次数:32  
标签:jump 指令 result 例题 nop 查壳 IDA

[GFCTF 2021]wordy

pe查壳,无壳64位ELF文件

image

kali上运行以下

image

拖进IDA中看看

image

无主函数,应该有花指令

image

这里发现1144出错导致IDA无法识别,内容为EBFF机器码

这里因为我们需要取出 EBFF 下面的地址,也都是 EBFF, 所以工作量巨大,故使用IDA自带的python编写脚本

start = 0x1135  #开始地址
end = 0x3100    #结束地址

for i in range(start,end):
    if get_wide_byte(i)==0xEB:          #前两个EB
        if get_wide_byte(i+1) == 0xFF:  #后两个FF
            patch_byte(i,0x90)          #改为0x90(nop掉)

运行后蹦出来了

image

flag为GFCTF'{u_are2wordy}'

[NSSRound#3 Team]jump_by_jump

pe查壳,无壳32位

image

拖进IDA中打开

image

发现了花指令

               jz      short near ptr loc_41188C+1
               jnz     short near ptr loc_41188C+1
loc_41188C:
               call    near ptr 41BC4932h

是jz和jnz互相构筑的跳转花指令

直接把call那段nop掉(注意不要直接nop,要不然会把下面几行一起nop掉),在Patch Bytes里把E8改成90

image

然后点击左边黄色部分,按c一步一步把它转为红褐色

image

然后找到main函数点击p重构,最后f5反编译

image

[NSSRound#3 Team]jump_by_jump_revenge

pe查壳,无壳32位

image

拖进IDA中

image

发现花指令,90nop掉,再在main函数处p重构,f5反汇编

image

点进j_strcmp函数看看

image

那么开始编写脚本

a=['~','4','G','~','M',':','=','W','V','7','i','X',',','z','l','V','i','G','m','u','4','?','h','J','0','H','-','Q','*']
for i in range(28,-1,-1):
    k = (i * i + 123) % 21
    for j in range(3):
        x=(ord(a[i])-0x20+j*0x60-ord(a[k]))
        if x>=33 and x<=126:               #print(chr(x))
            a[i]=chr(x)
            break
flag=''
for i in a:
    flag+=i
print(flag)

image

[MoeCTF 2022]chicken_soup

pe查壳,无壳32位

image

拖进IDA中

image

发现了sub_401000和sub_401080对v4进行了加密,点进去看看

image
image

全部nop掉,在401000和401080处按p重构

然后就可以点进去看伪代码了

image
image

然后就可以开始编写脚本了

result =[0xcd,0x4d,0x8c,0x7d,0xad,0x1e,0xbe,0x4a,0x8a,0x7d,0xbc,0x7c,0xfc,0x2e,0x2a,0x79,0x9d,0x6a,0x1a,0xcc,0x3d,0x4a,0xf8,0x3c,0x79,0x69,0x39,0xd9,0xdd,0x9d,0xa9,0x69,0x4c,0x8c,0xdd,0x59,0xe9,0xd7]

for i in range(len(result)):
	result[i] = (result[i] // 16 | result[i] << 4) & 0xff
	print((result[i]))

for i in range(len(result)-1, 0, -1):
    result[i-1] -= result[i]

print(bytes(result))

image

标签:jump,指令,result,例题,nop,查壳,IDA
From: https://www.cnblogs.com/kelec0ka/p/17908980.html

相关文章

  • ARM64技术 —— 系统调用指令SVC、HVC和SMC的使用规则
    来源:learn_the_architecture_-_aarch64_exception_model_102412_0103_01_en.pdf即:EL0不能调用SMC或者HVC这个从HVC和SMC指令的伪码中可以看到:HVCSMC......
  • XS PLCopen 标准控制器 XS Studio 指令
     1.基础指令  1-1.位逻辑指令 1-1-1.基本位逻辑指令指令名称      功能介绍AND          运算符“与” OR          运算符“或”NOT          运算符“非”XOR      ......
  • 指令集,架构,都是什么意思?
    背景:我上网冲浪,经常看到指令集,架构,这都是什么?还有,什么AMD,ARM,我总是分不清,他们是啥? 整理: 问题1:指令集是什么?是一种标准。AI回答:指令集是一种计算机处理器能够理解和执行的指令的集合。指令集架构可以被视为一种标准,因为它定义了处理器与软件之间的接口。问题2:......
  • vim 指令
    在Vim中打开文件后,可以使用以下指令进行编辑和操作:1.`i`:进入插入模式,可以在光标前插入文本。2.`a`:进入插入模式,可以在光标后插入文本。3.`o`:在当前行的下方插入一个新行,并进入插入模式。4.`O`:在当前行的上方插入一个新行,并进入插入模式。5.`x`:删除光标所在位置的字符。6.......
  • Linux操作系统常用操作指令
    Linux操作系统常用操作指令有很多,以下是一些常见的指令:ls:列出目录内容。cd:改变当前工作目录。pwd:显示当前工作目录的路径。mkdir:创建新目录。rmdir:删除空目录。rm:删除文件或目录。cp:复制文件或目录。mv:移动或重命名文件或目录。cat:显示文件内容。more和less:分页显示文......
  • 鞅与停时定理 例题记录
    鞅与停时定理,一个很厉害的东西,感觉像是一种势能分析。关于它具体是什么,笔者的数学水平还不足以讲述,所以在这里推广一下:概率论科技:鞅与停时定理-littleZ_meow的小窝。下面的写法可能很不专业,请自行避雷。给出一种很OI的解释:你需要设计一个函数\(f(x)\),有次能够得到每一个......
  • 常用指令
    javap作用:查看Javaclass文件的详细信息;用法:javap<options><classes>其中,可能的选项包括:-help--help-?输出此用法消息-version版本信息-v-verbose输出附加信息-l输出......
  • Home-图片懒加载指令实现
    场景和指令用法场景:某些网站首页通常会很长,用户不一定能访问到页面靠下面的图片,这类图片通过懒加载优化手段可以做到,只有进入视口区域才发送图片请求指令用法:<imgv-img-lazy="item.picture"/>在图片img身上绑定指令,该图片只有正式进入到视口区域时才会发送图片网络请求实现......
  • 3.9 指令传送和预测的先进技术
    3.9指令传送和预测的先进技术高性能流水线,特别是多发射流水线中仅能够预测分支还不够,需要传送高带宽的指令流(多发射的取值周期变多,预测要等到译码阶段才知道是否为分支),因此需要使用BTB提高指令传送带宽。同时高级的前瞻技术能够进一步增强ILP。提高取值带宽分支目标缓冲BTB预......
  • Linux-基本指令2
    上篇文章,我们分享了几个基本的指令。我们可以通过pwd指令来查看我们当前所在的路径,可以通过cd指令切换我们所在的路径,可以通过touch指令来创建普通文件,可以通过mkdir指令来创建目录文件,可以通过ls指令来查看当前路径下的文件等等。本篇文章,我们继续分享一些常用的基本指令。本次文......