-
-
[原创]第六题 追凶者也_pw
-
发表于: 2018-12-12 00:05 2815
-
运行效果。
IDA加载
快速定位错误位置。
无奈之际发现存在另外的线程。
进入跳转的函数,发现别有洞天。4147F0 开始计算是否正确。计算成功后对对话框的提示字符串进行异或计算,生成正确的字符串。
输入参数为字符串指针和长度。下列函数中初始化9字节的内存(3*3)
检查输入个数是否为偶数,按照2个字节一组对4147D0进行操作。操作函数401380。
输入: 413725860
输出: 123456780
进一步分析401380. A1 取值 wdsa. A2取值1234567890. A1想不想打游戏的前后左右操作。A2的值在4147D0中计算索引位置。该位置分解为横纵俩个坐标(3*3)。分析法发现 w 将当前 位置值向上移动, s 是向下移动,d向右移动, a向左移动。
结果就是完成七巧板控制。0可以与周围任意交换。
所以结论是:d6d8s7s4a1w2a5w6
七巧板应该还有其他的解,程序中已经限定20个字符,10个操作。这可能也就是唯一解了。当然应该也可以爆破。
int __cdecl W_CHECKsub_401040(HWND hDlg) { void *v1; // ST08_4 signed int i; // [esp+Ch] [ebp-24h] signed int v4; // [esp+10h] [ebp-20h] CHAR String; // [esp+18h] [ebp-18h] int v6; // [esp+19h] [ebp-17h] int v7; // [esp+1Dh] [ebp-13h] int v8; // [esp+21h] [ebp-Fh] int v9; // [esp+25h] [ebp-Bh] __int16 v10; // [esp+29h] [ebp-7h] char v11; // [esp+2Bh] [ebp-5h] strcpy(aTryAgain_0, "try again!"); strcpy(aFail_0, "fail"); String = 0; v6 = 0; v7 = 0; v8 = 0; v9 = 0; v10 = 0; v11 = 0; GetDlgItemTextA(hDlg, 1001, &String, 20); v4 = 0; for ( i = 0; i < 20; ++i ) v4 += *(&String + i); if ( v4 > 0 && v4 < 4132 ) { v1 = malloc(v4); sub_401020(); j___free_base(v1); } return MessageBoxA(0, aTryAgain_0, aFail_0, 0); }
void __stdcall StartAddress(LPVOID lpThreadParameter) { while ( 1 ) { EnterCriticalSection(&CriticalSection); if ( dword_4147FC == 1 ) { sub_401C10(); dword_4147FC = 0; } LeaveCriticalSection(&CriticalSection); } }
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2018-12-12 00:06
被scpczc编辑
,原因:
赞赏记录
参与人
雪币
留言
时间
一笑人间万事
为你点赞~
2022-7-27 01:52
心游尘世外
为你点赞~
2022-7-26 23:49
飘零丶
为你点赞~
2022-7-17 03:23
赞赏
他的文章
- [原创] CTF2019-3-07 web svr wp 2652
- [原创]2019CTFQ2T6 2624
- [原创]CTF2019Q2T1 破文 2191
- [求助]WIN10 X64 下用户如何权限配置? 3252
看原图
赞赏
雪币:
留言: