首页
论坛
专栏
课程

[原创]借助Process Monitor(ProcMon.exe)逆向一个CrackMe

2019-6-28 00:04 3797

[原创]借助Process Monitor(ProcMon.exe)逆向一个CrackMe

2019-6-28 00:04
3797
一位名为Arkantos的作者,在Crackmes.cf(Crackme.de的镜像站点)站点上提交了一个Crackme,难度级别为1-very_easy_for_newbies。这种入门级别的Crackme其实不足以写博客,只是它的逆向过程正好可以用Process Monitor来完成,写这篇文章就当做Process Monitor的一个实例吧。

     作者信誓旦旦的说该crackmes没有加壳,然而,拖进IDA后发现带了UPX壳,于是用DIE查壳确认一下,果然带了UPX壳!作者真是明目张胆的...我们来看下脱壳后怎么分析这个Crackme。

    把脱壳后的crackmes拖进IDA,映入眼帘的就是start函数中调用了若干文件操作的API:

这个级别的CM,遇到文件操作,很可能是在tmp目录下生成并运行bat文件,最终序列号的验证也由bat文件完成。既然这样,只要观察CM的行为,应该能获得bat文件,于是,我运行ProcMon并设置如下过滤器,然后开始监视CM的运行过程:

这个级别的CM少有网络/注册表操作所以,在ProcMon窗口中把这两个监测项反选以减少输出:

我猜测这个CM会生成bat文件,所以,在文件操作中更应该关注程序调用CreateFile的行为,因此在Operation中选中一个事件,右键,在弹出的菜单中选择包含CreateFile而过滤其他文件操作:

哼哼,输出窗口顿时清爽了很多!浏览输出,大多数是为了加载必要的系统dll做的文件打开操作,唯独有一项特别刺眼,在%TMP%目录下生成了名为b2e.exe的文件!嗯,在Path列下,选中b2e.exe事件所在行,右键菜单----"jump to"定位到b2e.exe所在的路径,准备分析该文件。


难道这个CM是通过exe来生成和验证序列号?不过,既然我都在监测程序的行为了,那就顺带把这个新生成的程序的行为一起监测了。重新设置过滤器,然后运行b2e.exe,仍然检测程序的CreateFile行为,得到下列输出:


果然,b2e.exe真的在%TMP%目录下创建bat文件,再次右键菜单--"jump to",定位到该bat文件:

查看bat的内容,的确和屏幕上的输出一致
@echo off
echo off
color 4
title Crackme2.exe
cls
:Main3
set a=e@s\/
set b=h@rd
set c=57f8s+-
set d=1a2f5-+
set e=oneld-561-fc
set as=12as5789w
set ad=123fa4v5bw
set aj=51236fs4578951235
set ja=1as23fa4
set na=6n6o8t4h4i6n4g
cls
ECHO 		...............................................
ECHO 			Please enter your username
echo		    To crack This Rubbish Enter Five Serials..
ECHO			 ...............................................
ECHO.
set /p u=Type your username here: 
if u==' goto pass
goto pass
:pass:
echo.
echo.
echo.
set /p P=Type your First password here: 
if %P%==%u%%c%%a% goto second
if %p%==%u%%d%%a% goto second
goto no
:second
echo.
echo.
echo.
set /p Q=Type your Serial here: 
if %Q%==%p%%e%%b% goto last
if %Q%==%p%%as%%b% goto last
goto no2
echo.
echo.
echo.
:last
echo.
echo.
echo.
set /p R=Type your Reg Code here: 
if %R%==%u%%ad%%b% goto four
if %R%==%p%%aj% goto four
if %R%==%p%%ja%%a% goto four
goto NO3
:four
echo.
echo.
echo.
set /p F=Type Fourth Code Here:
if %F%==%b%%a%%na%%p% goto five
if %F%==%u%+-%p%-+%r% goto five
if %F%==%a%%p%%b% goto five
goto no4
:five
echo.
echo.
echo.
set /p T=Type Last password here: 
if %T%==%u%%p%%b%%q% goto yes
if %T%==%p%%F%%a%%b% goto yes
goto no4
echo.
echo.
echo.
:yes
echo Hi %u% Congratulation!!! you've beaten my Second crackme
pause
exit
echo.
echo.
echo.
:no 
echo		 No, wrong Pass Please try again later...
pause
goto main3
:no2
echo        No ,wrong Serial. Try again....
pause
goto main3
:no3
echo 		nope, wrong Reg Code. Try again Later...
pause
goto main3
:no4
echo No man!!! It's Wrong???
pause
goto main3
 
嗯,接下来的工作不难了,我就略过了~


[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (3)
GJHSQGD 2019-6-28 18:26
2
0
bat2exe
qqsunqiang 2019-6-28 20:58
3
0
输入了5次 ,''57f8s+-e@s\/h@rd'57f8s+-e@s\/oneld-561-fch@rd
太累人了
hyjxiaobia 2019-6-29 21:42
4
0
qqsunqiang 输入了5次 ,''57f8s+-e@s\/h@rd'57f8s+-e@s\/oneld-561-fch@rd 太累人了
不小心还回错!
游客
登录 | 注册 方可回帖
返回