首页 > 其他分享 >Task2 - IDA学习【进度 - 第二课】

Task2 - IDA学习【进度 - 第二课】

时间:2024-08-08 17:30:19浏览次数:13  
标签:Task2 第二课 esp int v7 ebp printf main IDA

学习目标:

- 无名侠的课,看二进制培训(第二集和第三集)(https://space.bilibili.com/7761039/video)

- 会反汇编
    
- 会字符串搜索(f12)
    
- 会简单异或解密
  • 了解一下操作系统

    • linux系统的可执行文件的后缀

    • windows系统的可执行文件的后缀

    • 了解安装die(Detect It Easy)工具(自行网上或论坛搜索)

  • 可以略微了解docker(和vmware差不多)

第二课 简单的加密算法

1. 先运行一下程序

image

2.使用左侧functions查找main函数

image

3.将函数名改为真实函数名
点击查看代码
int __cdecl main_0(int argc, const char **argv, const char **envp)
{
  int v3; // edx
  int v5; // [esp-4h] [ebp-1E8h]
  unsigned int i; // [esp+D0h] [ebp-114h]
  char v7[260]; // [esp+DCh] [ebp-108h] BYREF
  int v8; // [esp+1E0h] [ebp-4h]
  int savedregs; // [esp+1E4h] [ebp+0h] BYREF

  printf("Hi CTFer,Input your flag:");
  scanf("%s", v7);
  for ( i = 0; i < strlen(v7); ++i )
    ++v7[i];
  if ( sub_454086(v7, "gmbh|ZPV`GJOE`JU`IBIB~") )
    printf("you are wrong!\n");
  else
    printf("you are right!\n");
  sub_4558B4(&savedregs, &dword_45A2C0, 0, v3);
  return sub_4546B7((unsigned int)&savedregs ^ v8, v5);
}
4.对main函数分析发现v7变量被for循环每一个字母向后移动了一位,结果得到“gmbh|ZPV`GJOE`JU`IBIB~”所以有结果想要知道初始值,只需要每一个向前移动一位
5.编写
点击查看C语言代码
#include <stdio.h>
#include <string.h>
 int main(void)
 {
    char str1[] = "gmbh|ZPV`GJOE`JU`IBIB~";
    for ( int i = 0; i < strlen(str1); ++i )
    --str1[i];
    printf("%s\n",str1);
    printf("Ok\n");

    return 0;
 }

标签:Task2,第二课,esp,int,v7,ebp,printf,main,IDA
From: https://www.cnblogs.com/vgwl/p/18349357

相关文章

  • 【CSS入门】第二课 - margin外边距
    这一小节,我们说一下margin外边距。怎么理解这个外边距呢,比如小张和小丽站在一起,紧紧排着站。试想一下,如果他俩冬天都穿着羽绒服和夏天穿着短袖,是不是占据的空间会不一样呢。那么回到HTML网页开发商来说,如果两个元素,他们加一些外边距,占的空间也会不一样,而且会使两个元素的距离也......
  • Pylance reportArgumentType 与 Pydantic 的 BeforeValidator
    我正在编写一个类似于pydantic叫ImportString的ImportPlugin类型,它导入并可选择调用对象并返回调用结果。例如:fromtypingimportAnnotated,TypeVarfrompydanticimportBaseModel,BeforeValidatorclassMyModel(BaseModel):length:Im......
  • 基于标定板的lidar到车体的外参标定思路
    基于标定板的lidar到车体的外参标定思路1.什么是lidar到车体的外参?在机器人,自动驾驶等领域,要想载体能够自主导航,那我们就得赋予他们和人类似的能力,就是让他们知道,自己是谁,自己在哪,我们怎么才能去到哪的问题。载体上有很多传感器,各个传感器都是从自己的视角来对周围环境......
  • Element el-form 表单校验,保存或提交验证某一项或者多项;validateField 的使用
    通常新增或者编辑对form表单的校验都是全局性的校验:this.$refs.form.validate(valid=>{if(valid){//校验通过,业务逻辑代码...}});如果需要对表单里的特定几个必填项进行校验,应该如何实现? 业务场景:下图点击保存按钮时,只需要校验前两项,其余参数不......
  • javax.validation包校验嵌套属性(List对象)的写法
    1maven依赖<!--HibernateValidator用于数据验证--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></depende......
  • Task2 baseline01 精读 #datawhale夏令营
    写在前面这个是datawhale夏令营2024年第三期的第二次Task的笔记,由于Task2要求的是精读代码,而我在第一篇文章中已经精读的差不多了,这篇文章我就总结升华一下上篇文章的内容,并且补充说明一下上一篇文章说的不太完善的__main__函数后面的部分内容。好了,我们开始今天的探索之旅......
  • 基于hibernate-validator实体字段唯一性检查 ,UniqueKey注解
    基于hibernate-validator实体字段唯一性检查,UniqueKey注解前言经常会在新增或修改时,检查某个字段或者多个字段的唯一性,如果重复就需要返回错误信息,重复代码写多了就准备写校验注解解决这个问题,分为两个版本,hibernate和mybatisplus1.mybatisplus注解/***唯一约束*<p>......
  • 4.10.2 radar2lidar标定
    4.10.2radar2lidar标定欢迎关注我的B站:https://space.bilibili.com/379384819欢迎交流学习,vx:18074116692参考教程:AbangLZU/SensorsCalibration:OpenCalib:AMulti-sensorCalibrationToolboxforAutonomousDriving(github.com)1.查看系统环境要运行本仿真程序,需要......
  • easyFrida指南
    easyFrida使用python运行pythoneasyFrida.py-husage:easyFrida.py[-h][-R][-SS][-fF|-pP][--classNameCLASSNAME][--pluginPLUGIN][-l]__________________|___|__(_)__||___/_\/_`/__||||......
  • 如何将 UniqueTogetherValidator 显示为字段错误而不是非字段错误?
    我有一个像这样的序列化器:classContactSerializer(serializers.ModelSerializer):classMeta:model=Contactfields=('account','first_name','last_name','email','phone_num......