(Jarvis Oj)(Re) 软件密码破解1

本文通过实际案例介绍了一种软件密码破解的方法。首先利用IDA进行静态分析,再使用OD进行动态调试,找到关键的字符串“你赢了!”并追踪到对应的汇编代码。通过分析循环异或操作和内存地址,最终确定了密钥和加密算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(Jarvis Oj)(Re) 软件密码破解1

首先放到ida中,反汇编出上千个函数,感觉无从下手。于是用od动态调试。先搜索一波字符串。这里写图片描述
发现“你赢了!”然后找到相关汇编代码。
这里写图片描述
找到关键跳转
这里写图片描述
0x12E1C69地址开始,将ebx中地址的数据和14个字节的数据进行比较。那么ebx中的数据是什么?往上看到一个循环异或操作。eax中的数据就是输入的数据,每次都将一个字节与dl进行异或。那么dl的数据又是什么?ecx+eax=0x14577F8,在内存中找到该地址。
这里写图片描述

  1 #include<stdio.h>                                                                                                  
  2 int main(void){
  3 int cipher[14]={0x1b,0x1c,0x17,0x46,0xf4,0xfd,0x20,0x30,0xb7,0x0c,0x8e,0x7e,0x78,0xde};
  4 int key[18]={0x28,0x57,0x64,0x6B,0x93,0x8F,0x65,0x51,0xE3,0x53,0xE4,0x4E,0x1A,0xFF};
  5 for(int i=0;i<14;i++)
  6     printf("%c",cipher[i]^key[i]);
  7 return 0;
  8 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值