Crackerme资源(包含原版以及修改访问权限版)
Crackerme.zip
(49.84 KB, 下载次数: 10)
1.CRACKME 界面 及OD分析
1.1
初次尝试,使用OD打开,直接冲字符串
1.2
1.3
1.4
我????给我上IDA
2.使用IDA打开CRACKME程序
2.1
按空格切换为Graph模式便于我们分析
2.2
3.分析思路
①先将比较明显的数据变更为便于我们分析的名称
来源于百度百科:MSG是Windows程序中的结构体。在Windows程序中,消息是由MSG结构体来表示的。成员变量含义:第一个成员变量hwnd表示消息所属的窗口;第二个成员变量message指定了消息的标识符。第三、第四个成员变量wParam和lParam,用于指定消息的附加信息。最后两个变量分别表示消息投递到消息队列中的时间和鼠标的当前位置。
3.1.1
按下M,选择枚举
3.1.2
3.1.3
arg_8应该就是我们的wParam
3.1.4
3.1.5
②在mov ds:dword_401113, eax 的位置触发异常
.text的访问属性为可读可执行,这里执行写入操作会触发异常
3.2.1
3.2.2
③继续分析,双击进入TopLevelExceptionFilter,查看SetUnhandledExceptionFilter设置的异常处理函数
3.3.1
3.3.2
3.3.3
④添加结构体
3.4.1
添加CONTEXT、FLOATING_SAVE_AREA、EXCEPTION_RECORD、EXCEPTION_POINTERS四个结构体,双击CONTEXT,便于一会儿我们查看数据
3.4.2
⑤分析步骤
3.5.1
按F5转换为伪代码
[C] 纯文本查看 复制代码 signed int __stdcall sub_40334A(struct _EXCEPTION_POINTERS *ExceptionInfo)
{
DWORD v1; // eax@1
DWORD v2; // ebx@1
PCONTEXT v3; // esi@1
v1 = 32 * (ExceptionInfo->ExceptionRecord->ExceptionCode & 0xDEADFF);
v2 = v1;
v1 += 4206510;
v3 = ExceptionInfo->ContextRecord;
v3->Edi = v1;
*(DWORD *)((char *)&v3->ContextFlags + v2) = v1 + 732;
v3->Eip = v2 + 4198367;
return -1;
}
故密码由fubar变更为了magic
⑥测试密码
3.6.1
3.6.2
⑦将.text段的访问属性变更为可写入的状态
3.7.1
详细操作见②
此时因为不会触发异常,所以输入密码fubar即可成功
3.7.2
|