新手简单入门逆向-strcmp函数相关知识点

CTF逆向入门:IDA定位主函数与加密逻辑分析实战指南 在软件逆向工程中,理解程序执行流程是分析的基础。程序通常从主函数(main)开始执行,这是用户代码的逻辑起点。通过静态分析工具如IDA Pro,可以快速定位主函数,从而揭示程序的核心逻辑。这一技术对于安全研究、漏洞挖掘和CTF竞赛至关重要,尤其在分析加密算法、验证逻辑时,能有效提升效率。本文聚焦于逆向工程中的关键步骤,详细介绍了通过字符串交叉引用、启动函数特征识别等方法定位主函数,并初步解析加密逻辑,帮助读者掌握从入口点到核心代码的追踪技巧。 阅读详情

题目名称:skipper-64

所需工具:IDA Pro、Pwndbg、checksec

1、首先通过checksec检查保护模式:

代码中没有开启PIE(内存地址随机化)


2、将程序拖入到IDA PRO中,定位到main函数,F5反汇编

__int64 __fastcall main(int a1, char **a2, char **a3)
{
  unsigned __int64 v3; // rsi
  unsigned __int64 v4; // rdx
  char s1; // [rsp+10h] [rbp-410h] BYREF
  char v7; // [rsp+11h] [rbp-40Fh]
  unsigned __int64 v8; // [rsp+418h] [rbp-8h]

  v8 = __readfsqword(0x28u);
  sub_400B3E(&s1, a2, a3); //创建子进程 执行uname 获取计算机名
  printf("Computer name: %s\n", &s1);
  if ( strcmp(&s1, "hax0rz!~") )//第一次判断
  {
    printf("Sorry, your computer's name - %s - is not correct!\n", &s1);
    raise(9);
  }
  sub_400C4A(&s1); //读取内核版本号
  printf("OS version: %s\n", &s1); //第二次判断
  v3 = (unsigned __int64)"2.4.31";
  if ( strcmp(&s1, "2.4.31") )
  {
    printf("Sorry, your OS version - %s - is not supported!\n", &s1);
    v3 = (unsigned int)(v7 / v7 - 1);
    v4 = (unsigned __int64)s1 >> 32;
    LODWORD(v4) = s1 % (int)v3;
    s1 /= (int)v3;
  }
  sub_400AC6(&s1, v3, v4); //查看电脑CPU型号
  puts(&s1);
  if ( strcmp(&s1, "AMDisbetter!") ) //第三次判断
  {
    printf("Sorry, your CPU - %s - is not supported!\n", &s1);
    __asm { int     80h; LINUX - sys_exit }
    JUMPOUT(0x40283BLL);
  }
  sub_400D5F();
  return 0LL;
}

程序中进行了3次判断,同时创建了一个子进程执行uname

sub_400B3E(&s1, a2, a3); 函数中内部有一个fork函数专门用来创建子进程的。

所以我们调试的时候要只调试父进程即可。

3、怎么做呢?

首先程序中没有可利用的情况,其次我们电脑也很难满足3种条件,那么可以另辟蹊径!从strcmp判断函数上下手。

strcmp 比较函数,用来比较str1与str2是否一致,如果如果二者相同那么则将返回0,这个返回值存储在eax寄存器中。

所以到这里思路出现了:

通过动态调试,在每次执行完strcmp的时候手动将eax的值修改为0即通过对比。


4、实操

首先定位main函数地址

我们在反汇编视图中找到main+1的区域

从这里开始向下寻找到我们的3个strcmp分别记录下来

第一个:0x40272F

第二个:0x402792

第三个:0x402810

然后回到PWNDBG中下断点执行

下断点方法 b *地址

然后输入set follow-fork-mode parent,防止之前的子进程干扰了调试导致的报错。

我们到达了第1个strcmp,再输入ni (下一步)执行这条命令,在执行后输入set $eax=0 将eax寄存器值设置为0

然后再次输入c(运行到下一个断点)

重复上面的步骤,直到完成了3个strcmp的时候再次输入c

最终得到flag

CTF逆向入门:从UPX脱壳到IDA静态分析与Python脚本解题 逆向工程是信息安全领域的核心技术之一,它通过分析程序的二进制代码来理解其内部逻辑与工作原理。其核心原理在于将机器码反汇编为可读的汇编指令,进而推断出程序的算法与数据结构。这项技术的价值在于漏洞挖掘、恶意软件分析、软件保护评估以及CTF竞赛等多个场景。在CTF(Capture The Flag)竞赛中,逆向工程是解题的关键技能,常涉及对加壳程序的脱壳与静态分析。本文以一道典型的CTF逆向题为切入点,详细介绍了如何应对UPX壳的挑战,并利用IDA Pro进行静态分析。通过结合Python脚本自动化提取关键数据与 阅读详情

相关推荐

CTF逆向入门:从UPX脱壳到Delphi程序分析实战

逆向工程是网络安全领域的关键技术,旨在通过分析软件二进制代码理解其内部逻辑与工作原理。其核心价值在于漏洞挖掘、恶意软件分析和软件保护评估。在CTF竞赛中,逆向工程常涉及对加壳程序的脱壳与分析。UPX作为一种常见的压缩壳,其脱壳过程是入门者理解程序加载与内存操作的典型场景。而Delphi程序因其清晰的代码结构和丰富的字符串资源,成为逆向分析中定位关键逻辑的理想对象。本文聚焦于UPX脱壳与Delphi程序分析,通过实战演示如何快速定位并获取Flag,为初学者构建逆向工程的正反馈学习路径。

weixin_30681615的博客 422

逆向 string.h 函数库 memset、strcpy、strcmp 函数

memset 函数 函数原型:void *memset(void *str, int c, size_t n) 主要功能:复制字符...

墨鱼菜鸡 302

BugKu---Easy_Re逆向题解

_m128i 类型变量映射到XMM[0-7]寄存器,它的地址会自动对齐到16字节的边界, 即__m128i类型的变量的起始地址总是16的整数倍。由于IDA不提供撤销的功能,如果你不小心按到某个键,导致ida数据库发生了改变,就得重新来过,所以要记得在经常操作的时候,加上快照:file-->take database snapshot。输入flag v9,将v9和v5比较,得到v3可能大于0,小于0,等于0;【想找一个合适的将字符串倒序的代码,没怎么找到,有点复杂,直接倒序】

m0_63581842的博客 2588

汇编位移指令全解与逆向实战:从SHR/SHL到ROL/ROR,逆向分析strcmp

本文摘要: 文章主要讲解了汇编语言中的位移指令及其逆向应用。内容包括:1) strcmp函数的逆向分析,展示字符串比较的汇编实现;2) 逻辑位移指令SHR/SHL的功能说明(右移=除2,左移=乘2)及示例;3) 算术位移SAR/SAL的特性,特别指出有符号数处理时的差异;4) 循环位移ROL/ROR指令的原理和实际应用,通过0x77886611等案例演示位移效果。最后布置了相关计算题,要求分析位移操作后的寄存器值变化及标志位影响。全文聚焦位移指令的底层实现与逆向工程应用。

深耕计算机专业知识与技术。 1289

[新手入门]OllyDbg动态调试实战:从零掌握逆向分析基础

本文详细介绍了OllyDbg动态调试工具的入门与实战应用,帮助新手从零掌握逆向分析基础。通过具体案例演示如何定位关键代码、分析验证逻辑及修改程序,同时分享高阶技巧与插件推荐,适合逆向工程初学者快速上手。

weixin_29232121的博客 926

安卓逆向入门:从环境搭建到实战分析,掌握APK逆向核心技术

逆向工程是理解软件内部工作原理的关键技术,通过分析程序的执行逻辑与数据流,可以深入探究其实现机制与安全边界。其核心原理在于对编译后代码的静态与动态分析,结合调试与插桩技术,还原程序的原始设计与运行流程。这项技术在软件安全评估、漏洞挖掘、恶意代码分析等领域具有重要价值,尤其在移动安全领域,针对安卓APK的逆向分析已成为安全研究者的必备技能。本文聚焦安卓逆向的实战入门,详细介绍了以JADX、Frida为核心的工具链搭建与使用,涵盖APK结构解析、Java层静态分析、动态Hook以及Native层逆向等核心环节,

weixin_30824479的博客 381

[Zer0pts2020]easy strcmp 新手小白题解

Buuctf [Zer0pts2020]easy strcmp

2401_89602742的博客 251

CTF逆向工程入门:从零构建逆向思维与实战技能

逆向工程是信息安全领域的核心技术之一,它通过分析已编译程序的行为与结构,理解其内部逻辑与实现原理。其核心价值在于培养逆向思维,即从程序执行现象反推设计意图的能力,这在软件安全分析、漏洞挖掘与恶意代码研究中至关重要。掌握逆向工程需要理解程序从源代码到CPU指令的底层生命周期,熟悉内存、寄存器与栈的工作机制。在CTF竞赛中,逆向题目常作为关键环节,考察选手对加密算法、程序逻辑的分析与破解能力。本文聚焦于CTF逆向入门,系统拆解了逆向思维建立、核心工具链使用及实战分析方法,特别融入了对IDA Pro静态分析与x6

weixin_30480075的博客 433

逆向随笔 - strcmp函数的实现和分析

一、函数的实现 这个函数还是比较简单的,就不做多余的解释了,上代码:  int _myStrcmp( char * str1, char * str2 ) { while ( *str1 != 0 && *str2 != 0 && *str1 == *str2 ) { str1++; str2++; } return ( *str1 == 0 && *str

逐天实验室 ( SCLB ) 1365

CTF逆向入门:从静态分析到动态调试的实战解析

逆向工程是分析软件内部逻辑、理解程序行为的关键技术,广泛应用于安全研究、漏洞挖掘和软件分析等领域。其核心原理是通过反汇编和调试工具,将编译后的二进制代码还原为可理解的逻辑,从而揭示程序的算法、数据流和保护机制。掌握逆向技术对于提升二进制安全能力、理解系统底层运作具有重要价值,尤其在CTF竞赛、恶意代码分析和软件保护评估等场景中不可或缺。本文以一道典型的CTF逆向题目为例,详细介绍了使用IDA Pro进行静态分析、结合x64dbg进行动态调试的完整流程,并深入探讨了算法识别、反调试对抗等实战技巧,帮助读者从基

weixin_30480075的博客 424

CTF逆向入门:从JustRE赛题掌握PE文件分析与IDA Pro实战技巧

逆向工程是信息安全领域的核心技术之一,它通过分析程序的二进制代码来理解其工作原理与逻辑结构。其基本原理是将机器码转换为可读的汇编指令,再通过静态分析与动态调试还原程序行为。这项技术的价值在于漏洞挖掘、恶意软件分析和软件保护评估等多个领域。在CTF竞赛中,逆向工程常涉及对PE文件的分析,其中IDA Pro作为反汇编工具,配合exeinfope进行文件侦察,能够高效定位关键函数与算法逻辑。本文以一道经典CTF赛题为例,详细演示了从文件识别到算法逆向的完整流程,帮助读者掌握逆向分析的基础方法论与实战技巧。

cuhongjiao7003的博客 355

用deep seek练习IDA静态分析和定位strcmp参数

为了帮你练习IDA静态分析和定位strcmp参数,我提供一个自制的CTF风格示例代码。

2402_87039650的博客 1359

envi反演水质参数_遥感水质反演之反演模型

水质反演的框架图此为反演模型的章节第一部分,统计学基础:概率论、矩阵和数理统计的知识统计学知识框架# 1 基本统计概念知识在于应用,而非记忆!我们都是在样本的层面去操作数据的,以达到对总体性质的估计和推断,拿到一组数据首先进行基本的统计描述,常用的有:样本均值: 样本方差(调整方差)不是除以n,而是n-1, 标准差为样本方差开方即可皮尔逊积矩相关系数(简称相关系数): 相关系数范围在[-1,...

weixin_35275922的博客 3227

C 标准库函数 | strcmp, strlen

strcmp, strlen 函数的功能、返回值

JUST FOR FUN, CALM DOWN 353

自制JS某课脚本

根据实际需求自制网页讯网刷题脚本,绕过人脸,弹窗,答题,实现自动化运行

2301_81243054的博客 3458

基于角谱传播的MATLAB仿真:从相位恢复看自由空间光传播

本文详细介绍了基于角谱传播理论的MATLAB仿真方法,用于模拟自由空间光传播过程。通过傅里叶光学原理,将光场分解为频谱并应用传播相位滤波器,实现了从纯相位物体到可观测衍射图样的仿真。文章结合具体代码,演示了如何利用角谱法进行相位恢复,为计算成像和生物医学检测等领域的研究提供了实用的仿真工具和思路。

weixin_29055699的博客 279

[VNCTF2024]-PWN:preinit解析(逆向花指令,绕过strcmp,函数修改,机器码)

这边其实看反汇编没啥大作用,需要自己动调。但是前面的绕过strcmp还是要看一下的。

2301_79326813的博客 3049

PINN内嵌物理知识神经网络入门及文献总结

内嵌物理知识深度学习方法(PINN)已经成功用于解决各类科学计算问题,其本质是将物理先验知识嵌入神经网络训练中,将一个求解PDE的问题转化为一个优化问题。这篇博客主要记录PINN相关论文

山里娃的博客 7万+

[Zer0pts2020]easy strcmp

Exeinfo PE——无壳,64位可以得到:a2是要的flag,且与zer0pts{* * * ** * * * CENSORED * * * * * * * *}相等观察函数表:所以我们先看看init函数发现里面只有off_200DF0 和funcs_889,点击看看:off_200DF0:没有什么funcs_889:有sub_6E0和sub_795sub_6E0:没有什么sub_795:里面有:qword_201090、off_201028、sub_6EA点击看看qword_201090:没有什么of

2402_87493158的博客 498

RT-DETR改进策略【卷积层】| CVPR-2020 Strip Pooling 空间池化模块 处理不规则形状的对象 含二次创新

一、本文介绍 本文记录的是利用Strip Pooling模块优化RT-DETR的目标检测网络模型。Strip Pooling结合了长而窄的卷积核形状在一个空间维度上的长程关系捕捉能力和在另一个空间维度上的局部细节捕捉能力,有效地处理复杂的场景信息。这一机制通过采用1×N1×N1×N或N×1N×1N×1的池化核形状来适应不同的图像特征,提高模型对目标形状和分布的适应性。在场景解析网络中,Strip Pooling可以被用于提升对具有长程带状结构或离散分布目标的解析能力,特别是在复杂场景或不同对象布局条件下效果

Limiiiing的博客 580

机器人控制基础:电机编码器常见类型

电机编码器是测量电机位置、速度和方向的传感器,主要分为光电、磁性和旋转变压器三类。光电编码器精度高但需防尘,适用于伺服系统;磁性编码器耐环境性强,常用于汽车电机;旋转变压器适应极端环境,多用于军工领域。按信号类型可分为增量式(成本低)和绝对式(断电保留位置)。选型需综合考虑精度、环境适应性及成本。

start_up_go的博客 475

BUUCTF之[Zer0pts2020]easy strcmp(详细教程)

具体来说,sub_xxx 是IDA自动生成的函数名格式,它通常用来表示二进制中没有明确符号的函数,或者是IDA在反汇编时自动推测出来的函数。运用交叉应用查看各个函数的起始地址(查看了别人的wp,自己进行理解:隐藏的的操作必须在main函数之前进行完成,这样才能确保在main函数执行的过程中正确执行,所以通过查找各函数起始地址来与main函数起始地址进行比较,从而找出存在隐含操作的函数)发现这个函数原本存放的是strcmp的地址,现在存放的是sub_6EA,所以现在strcmp表示的是函数sub_6EA。

2403_88000145的博客 1968

动力学约束下的运动规划算法——状态栅格规划器(State Lattice Planner)

A*、RRT等算法建立的用于路径搜索的图模型是不考虑机器人的动力学约束的,其构建的图模型的两个相邻节点之间的路径可能是不可行的,或者很难被机器人跟踪的,现在我们想要使得图中相邻两个节点间的连接是一种满足动力学约束的可行的连接,那么如何构建一个这样的图呢? 构建这样的图通常有两种方法:第一种是基于控制空间的采样(正向方法)

慕羽★的博客 3104

BUU逆向 [Zer0pts2020]easy strcmp wp

拖进ida查看main函数,就是一个简单比较: 然后我们就看它对输入的字符进行了什么操作: 右移3位相当于除8,也就是把字符串分为8个一组,对应和qword_201060的值做减法,可以得到主函数里显示的字符串 注意:内存中存储为小端存储 我们只需要写出它的逆过程就可以了: #-*- coding:utf-8 -*- enc = "********CENSORED********" m = [0x410A4335494A0942, 0x0B0EF2F50BE619F0, 0x4F0A3A0

苗_的博客 1338

github创建账号第一步始终出错

github创建账号总结:第一次注册GitHub,填好用户名邮箱密码后进入下一步就卡在哪里,上面还提示Unable to verify your captcha response等,进入网址的解决办法以及下载其他的浏览器也无法解决,用手机浏览器抱着试一试的心态竟然成功了,分享给大家。手机下载谷歌浏览器,进入GitHub正常注册,能向下继续,邮箱验证完以后再用电脑登陆就ok啦

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 4373

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

新手必看:用IDA Pro F5秒解攻防世界Hello CTF逆向题(附Python脚本)

本文详细介绍了如何使用IDA Pro破解CTF逆向题Hello CTF,适合新手入门。通过分析程序逻辑、编写Python脚本自动解密,帮助读者掌握逆向工程基础技能,提升在攻防世界等平台的解题效率。

weixin_30715523的博客 955

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: CTF修仙成长历程(一)
下一篇: 永恒之蓝勒索病毒密钥获取并解密
阿斯顿法国红酒快
博客等级 码龄5年 154粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值