从CTF学习软件逆向分析

  • A+
所属分类:逆向工程

打开程序:有几秒的弹窗动画

从CTF学习软件逆向分析

主程序:

从CTF学习软件逆向分析

查看help:

从CTF学习软件逆向分析

大意是:你的任务是禁止开始动画,找到硬编码序列和注册机名称/序列号。这个级别为了确保你理解如何使用工具并且破解程序,这是三个很简单的保护测试。
祝你好运,技术更上一层楼。
先找到硬编码序列。随便填,点“check hardcoded”

从CTF学习软件逆向分析

弹出失败对话框。

从CTF学习软件逆向分析

可以考虑MessageBoxA下手和获取文本的地方下手,这里从获取文本的地方下手。
Bp GetDlgItemTextA,再次输入错误的,程序没断下,
删除断点,重新运行程序,bp GetWindowTextA,输入错误的硬编码,断下
Ctrl+F9,执行到函数结束,F7返回主模块。

从CTF学习软件逆向分析

代码分析如下:
获取输入文本到[403215],与[401353]处字符串比较,相同弹出正确对话框,否则弹出失败对话框

从CTF学习软件逆向分析

所以正确hardcoded是”HardCoded”
验证:

从CTF学习软件逆向分析

从CTF学习软件逆向分析

分析Name/Serial,随便输入:弹出对话框。

从CTF学习软件逆向分析

从CTF学习软件逆向分析

这次我们设置条件断点来分析,先将程序运行(因为消息断点必须是窗口创建之后再能设)
点击工具栏W按钮

从CTF学习软件逆向分析

随便选一个button设置消息断点:

从CTF学习软件逆向分析

如图:

从CTF学习软件逆向分析

断点设置成功:

从CTF学习软件逆向分析

随便输入序列号,点击CHECK,程序断下

从CTF学习软件逆向分析

从CTF学习软件逆向分析

通过堆栈知道断在了消息循环内部,消息是WM_LBUTTONUP

从CTF学习软件逆向分析

点击工具栏中的【M】按钮,打开内存窗口,在code段下内存访问断点

从CTF学习软件逆向分析

F9运行程序。
回到主模块,再继续F9,直到定位到处理序列号代码(因为给代码段下了内存访问断点,所以F9是一步一断),然后删除内存访问断点

从CTF学习软件逆向分析

如图,首先获取的是序列号,保存在[403242]:

从CTF学习软件逆向分析

获取用户名,保存在[403236]

从CTF学习软件逆向分析

根据用户名算出s字符串

从CTF学习软件逆向分析

根据序列号算s2

从CTF学习软件逆向分析

最后判断:

从CTF学习软件逆向分析

根据上面写出注册机:(代码在最下面)

从CTF学习软件逆向分析

注意,输入的序列号必须是可见字符,不仅仅是取模10等于是s[i],就行,所以用了while循环,直到j可见。

从CTF学习软件逆向分析

验证:

从CTF学习软件逆向分析

重新加载,只剩下启动动画了。
可以试试下断CreateWindowExA,重新运行程序,断下了。Ctrl + F9执行到返回,然后F7执行到主模块。可以看到下面有GetTickCount函数,就明白程序GetTickCount函数计时开机动画的启动时间。

从CTF学习软件逆向分析

分析:

从CTF学习软件逆向分析

所以,可以将jbe 改成jnb,让它第一次就满足条件,不再比较,就可以了。
改完保存到文件,发现开启动画果然没有了,至此,任务完成。

根据名字算序列号:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j;
char name[10], s[10];

printf("please input five chars : ");
scanf("%s", name);

for (i = 0; i < 5; i++)
{
s[i] = (name[i] % 10) ^ i;
s[i] = (s[i] + 2) % 10;
}

for (i = 0; i < 5; i++)
{
j = s[i];
while (j < 'A')
{
j += 10;
}
printf("%c", j);
}
printf("n");

return 0;
}

直接将附件的后缀改为exe即可 不需要解压

作者:小米粥,来源:先知社区


从CTF学习软件逆向分析


从CTF学习软件逆向分析

渗透工具|提权|内网|SRC|CS端安全测试|安全加固等资料分享

Apache Tomcat 自动 WAR 部署和 渗透测试工具

hash认证概念与hash破解方式(工具使用方式)

蓝队攻防|如何在没有日志的情况下跟踪事件?

代码审计相关知识与资料分享

渗透测试情报收集工具

weblogic 漏洞扫描工具

spring框架漏洞扫描

蓝队防守反制



欢迎关注LemonSec


觉得不错点个“赞”、“在看”哦

本文始发于微信公众号(LemonSec):从CTF学习软件逆向分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: