最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

快播:crackme002-abexcm5

来源:博客园


(资料图)

今天开始学习160个crackme

拖入exeinfo查看,发现是用汇编写的代码拖入OD,查看字符串可以看见有两个报错和一个输入正确的标志,这两个报错都是输入不正确之后的结果,我们跟进看看可以看到这里调用了一个MassageBoxA弹窗函数,title是"error",text是"The serial you entered is not correct!",往上找找,就可以看见一个判断跳转指令这个判断跳转指令跳过了整个弹窗函数,所以这个我们就可以判断这里可以进行爆破爆破方式:把je改成jne或者jmp就可以了(小tips:1、je指令和jz指令是一个意思,都是判断ZF标志位是否为0。若为0,则跳转。2、MassageBoxA弹窗函数:int MessageBoxA([in, optional] HWND hWnd, //句柄,调用这个来调用api[in, optional] LPCSTR lpText, //要显示的消息[in, optional] LPCSTR lpCaption, //对话框标题[in] UINT uType //对话框的内容和行为);)在往上找程序入口看见函数入口跳转到了一个函数调用的地方,也就是0040106c这个函数调用名字叫GetDIgItemTextA,主要用于检索与对话框中的控件关联的标题或文本(人话:就是获得你输入在框里面的字符串)

UINT GetDlgItemTextA([in] HWND hDlg, //包含控件的对话框的句柄[in] int nIDDlgItem, //要检索其标题或文本的控件的标识符[out] LPSTR lpString, //要接收标题或文本的缓冲区[in] int cchMax //要复制到 lpString 指向的缓冲区的最大长度(以字符为单位));这个时候就可以在这里下断点了,下完断点后f8步过(注意别f7步进,会很难过),然后弹窗出来之后随便输一个数点击check,继续步过,到了这个函数GetVolumeInformationA函数:获取磁盘驱动卷标名称(获取你将这个程序放置的盘上面的名称,如本人把程序放在了d盘,那这个函数就会获得本人d盘的名称data)BOOL GetVolumeInformationA([in, optional] LPCSTR lpRootPathName,//指向包含要描述的卷根目录的字符串的指针[out, optional] LPSTR lpVolumeNameBuffer,//指向接收指定卷名称的缓冲区的指针[in] DWORD nVolumeNameSize,//卷名称缓冲区的长度(如果未提供卷名称缓冲区,则忽略此参数)[out, optional] LPDWORD lpVolumeSerialNumber,//指向接收卷序列号的变量的指针(如果不需要序列号,此参数可以为 NULL)[out, optional] LPDWORD lpMaximumComponentLength,//指向接收指定文件系统支持的文件名组件的最大长度(以 TCHAR 为单位)的变量的指针[out, optional] LPDWORD lpFileSystemFlags,指向接收与指定文件系统关联的标志的变量的指针。[out, optional] LPSTR lpFileSystemNameBuffer,//指向接收文件系统名称的缓冲区的指针[in] DWORD nFileSystemNameSize//文件系统名称缓冲区的长度(以 TCHAR 为单位));往下继续走,可以看见已经捕获到了本人的磁盘名称,而且把名称和一个字符串4562-ABEX放在一起了(strcat函数不过多介绍,就是把字符拼接在一起)再往下走就是一个很普通的循环它把我们在栈上的磁盘名称的ascall码按字节进行了加1操作(别看见dword就是双字节,每个相邻指令的地址只变了1),而且循环了两次于是我们跑完之后栈里面的盘名也变成了FCUC,然后又经历了一次拼接,就变成了"L2C-5781FCVC4562-ABEX"这里程序加载了一个strcmp函数,而且把我们输入的和它生成的一串字符串当作函数参数放进了栈里,这个肯定可以看得出来在比较,比较过后的结果放进eax里面,如果不相同就是0,相同就是1最后就到了我们刚才爆破的地方,cmp相同标志位ZF为1,不同为0(其实是对两个操作数进行相减,但是不对操作数进行改变,只是改变了标志位而已)。最后再用je(即jz)对地址进行跳转那结果就显而易见了,我们需要输入的密钥就是L2C-5781FCVC4562-ABEX(此处根据每个人将程序放在哪个盘上而定,盘名不尽相同,大家自行而定)赢!

关键词: