当前位置:网站首页>【逆向中级】跃跃欲试
【逆向中级】跃跃欲试
2022-07-06 09:33:00 【TiggerRun】
跃跃欲试
题干
下载下来后,题目说找到 Serial
我先用PEiD查壳,看看是不是可执行文件,发现是加了壳的可执行文件。
然后我修改后缀为exe,发现可以打开。
0x1 脱壳
这题分类在中级,因为在初级就做过一个通过调试加密算法去分析注册码,以为这题是要先脱壳。
OD加载后暂停在 pushad,保存寄存器状态
我使用esp法 + HR 断点,来追溯popad
但是很奇怪,这壳retn到一个CALL,然后进入这个CALL后才是 push ebp等操作,我猜测CALL里的才是OEP,使用插件Dump后程序运行就报错,查了下资料说是修复IAT,我又下载了importREC,最后通过查询资料才知道win7不适合脱壳,需要安装XP虚拟机,我就没继续脱壳了。
这个后续脱壳成功后会发过程,这个壳应该有其他的保护处理。
0x2 OD调试
我随便输入一个邮箱,随便输入了下面的SerialNumber,然后点击确定
通过上次的注册机的学习,我这次使用了API断点,因为最后跳出一个信息框提示,我 ctrl + G 来到 MessageBoxA的函数头,对其函数头下了个普通断点。
然后再次点击确定,通过堆栈可以返回到调用MessageBoxA函数的代码段
这样就跟进了yyyx模块中
然后就是分析这些参数哪里来的
其中传入了4个参数,其中的eax是信息框的text内容,来自 lecal.80
然后往上分析,是从哪里跳转来的
上面出现一个jmp直接到这个信息框提示,跳过了中间的一段代码,然后我就去查看了中间这段代码被跳过了哪些内容
local.16存放了 Success的提示文本,说明这段代码很可能是注册成功执行的代码,那么从上往下执行上面一行是jmp,这个jmp直接跳到了弹出信息框,说明这段代码不是按顺序执行下来的,而是某个地址跳转而来,通过OD的提示网上找这个跳转。
找到这个跳转je,如果未实现跳转,lea eax,[local.7],local.7中存放了Registration Failure,然后进行push压栈调用下面的一个CALL,然后直接跳转到弹出信息框,说明这段代码是用来处理注册失败的。
把光标定位到这行代码,发现来自很多地址
这说明一点,上面就是验证的算法,有一大片的jnz
JNZ : jump if not zero 结果不为零则转移
然后我就往上拉,看到两个GetDialogText函数
通过下断点的方式验证这里是取出编辑框中的内容
我们找到了程序处理事件的最开始位置,就可以进行正向的分析了
我发现这个jmp跨度很大,直接跳到了之前分析的
处理错误事件的地方。
而且上面的ASCII字符串中写的“E-mail address is not valid”邮箱地址无法通过验证,说明前面的几个CALL是在做邮箱地址的格式正确判断操作。
这一段代码有必要琢磨,这功能是取字符串长度,方法和上次题目的不一样,上次题目通过scas遍历字符串,然后寄存器递减后取反 + 1
这里是通过地址递增,拿到结束符的地址后减去首地址从而计算出长度
通过这个cmp和jnz可以知道,serial的长度为 0x10 即 16位
然后后面的一些jnz我觉得是挺呆的,应该放在初级题中…
最后serial是个静态的值
0x3 新知识
- 通过地址递增计算字符串长度
- ASPack 堆栈法 脱壳
- importREC IAT修复工具
- LordPE Dump工具
- 无后缀的文件可以先通过PEiD查询以下EP
边栏推荐
猜你喜欢
Install docker under windows10 (through Oracle VM VirtualBox)
案例:检查空字段【注解+反射+自定义异常】
arithmetic operation
一个数10年工作经验的微服务架构老师的简历
Yao BanZhi and his team came together, and the competition experts gathered together. What fairy programming competition is this?
逻辑运算指令
Take you hand-in-hand to do intensive learning experiments -- knock the level in detail
JVM之垃圾回收器上篇
字节跳动春招攻略:学长学姐笔经面经,还有出题人「锦囊」
吴军三部曲见识(四) 大家智慧
随机推荐
Take you hand-in-hand to do intensive learning experiments -- knock the level in detail
Wu Jun trilogy insight (IV) everyone's wisdom
À propos de l'utilisation intelligente du flux et de la carte
汇编语言段定义
面试集锦库
Fdog series (III): use Tencent cloud SMS interface to send SMS, write database, deploy to server, web finale.
Only learning C can live up to expectations top5 S1E8 | S1E9: characters and strings & arithmetic operators
Shawshank's sense of redemption
TCP's three handshakes and four waves
TypeScript基本操作
Login to verify the simple use of KOA passport Middleware
CentOS7上Redis安装
JVM类加载子系统
Only learning C can live up to expectations top2 P1 variable
算数运算指令
Flink 解析(四):恢复机制
GCC error: terminate called after throwing an instance of 'std:: regex_ error‘ what(): regex
Activiti directory (III) deployment process and initiation process
[graduation project] QT from introduction to practice: realize imitation of QQ communication, which is also the last blog post in school.
DS18B20数字温度计系统设计