简单逆向分析使用案例(5)--CrackMe_04.exe 获取用户名和密码
来源:互联网 发布:学会python能干嘛 编辑:程序博客网 时间:2024/05/16 06:24
环境:
win7 旗舰版 x64
OD1.1(吾爱破解版)
PEiD0.95
使用资源
http://download.csdn.net/detail/obuyiseng/9351217 中的 CrackMe_04.exe
技巧:
借助OD中的栈回溯,考虑情况要全面 。
第一步:简单测试。
随便输入点击确定,程序自动关闭了。这里没有我们一直要找的MessageBox。这就需要使用第二步中的PEiD。查看下输入表。
第二步:使用PEiD查看程序信息。
发现该程序是VS2013编写,并且是Release。查看输入表信息,发现第一个API是PostQuitMessage函数。
第三步:进入OD调试
1、将程序拖入OD中,并打断点 BP PostQuitMessage----注意大小写
2、查看是否有存在1中打的断点
3、按C进行返回,并点击运行。弹出程序窗口,并进行任意输入,并点击确定。程序会在PostQuitMessage函数处进行断住。
4、点击堆栈窗口中的栈顶回车,进入到CPU窗口,此时CPU窗口就是PostQuitMessage调用后栈中压入的返回值。
将代码上移,发现含有文本"成功"
那么我们借助此开始查看代码。
5、我们需要
013510B6 |. 3905 6C333501 cmp dword ptr ds:[0x135336C],eax ; |
013510BC |. /75 22 jnz short CrackMe_.013510E0 ; |
因为jnz会跳转到成功下面,所以需要让cmp结果为0。
6、我们移动代码带该函数的顶部,并设置EIP。并按F8进行单步调试。
7、单步到下面代码
0135107B |. 35 78563412 xor eax,0x12345678
01351080 |. A3 6C333501 mov dword ptr ds:[0x135336C],eax
此处eax的值为"111",也就是我们输入的用户名。
先将eax与0x12345678进行异或, 并将eax的值 赋值到dword ptr ds:[0x135336C]。
代码继续执行
发现
eax=000000DE ---------- 222
ds:[0135336C]=12345617
8、综上所述,我们发现序列号为用户名异或上0x12345678。
9、此时我们用户名使用字母呢,该如何使用?我们使用默认的密钥0x12345678(十进制305419896)就可以。
总结:
1)当用户名为纯数字的时候: 使用该数字 xor 0x12345678
例如:1 xor 305419897 = 305419897
2)当用户名前面含有数字后面含有字母:只保留前面数字部分 xor 0x12345678
例如:1abc xor 305419897 = 1 xor 305419897 = 305419897
3)当用户名以字母开头,后面有数字和字母:都使用十进制305419896作为密钥
例如:aaa 或 a1 等 = 305419896
- 简单逆向分析使用案例(5)--CrackMe_04.exe 获取用户名和密码
- 简单逆向分析使用案例(3)--CrackMe_02.exe 找出用户名和序列号
- 简单逆向分析使用案例(6)--Reverse000.exe 获取密码
- 简单逆向分析使用案例(7)--Reverse001.exe 获取密码
- 简单逆向分析使用案例(8)--Reverse002.exe 获取密码
- 简单逆向分析使用案例(1)--CrackMe_00.exe 找出密码
- 简单逆向分析使用案例(2)--CrackMe_01.exe 找出密码
- 简单逆向分析使用案例(4)--CrackMe_03.exe 修改bug
- htpasswd.exe怎样使用 (svn用户名密码生成文件)
- Cookie学习总结-登陆案例(记住用户名和密码)
- 使用SharedPreferences实现简单的记住用户名和密码功能
- 使用JDBC连接MySQL数据库--典型案例分析(五)----用户名密码验证功能
- Android数据存储之SharedPreferences的简单使用(保存用户名和密码)
- 获取用户名跟密码的servlet小案例
- 获取WinNT/Win2k当前用户名和密码
- C# 获取身份验证的用户名和密码
- 蠕虫 srv32.exe 逆向分析笔记5
- cmd.exe 逆向分析
- gem5: the trace of cache set and cache line write hit counters
- LeetCode Longest Substring Without Repeating Characters
- 【JS】浅谈匿名函数与闭包
- lua语言基础
- java 线程技术详解
- 简单逆向分析使用案例(5)--CrackMe_04.exe 获取用户名和密码
- c++_6 : 构造函数和析构函数
- Notepad++ 正则表达式替换字符串
- mac上一键配置和安装adb驱动或者环境
- java web mysql数据库插入数据乱码问题解决方法
- 【软件工程】单元测试
- Android基础(一)
- 第一篇
- lightoj--1155--Power Transmission(最大流拆点)