决赛第二题第一小题
本帖最后由 fyc132 于 2018-5-16 18:45 编辑应官网邀请
首先定位到UE4中的关键事件
通过把输入的验证码传给tmgs.maln来验证
,
Dll先解密一个lua的文件头,在验证函数中加载该lua,并调用其中的check函数
找到lua执行opcode的地方
然后对每个case进行还原
还原后的结果为
通过置换掉luadec中的opcode对应表,修复下
关键的lua代码,luadec解析的还是有些问题,不过不影响,看汇编岂不美哉
(var.print)((var.check)("E0EA72E0E1C1BFFBC26E8B47AD9D809C"))我们观察到了程序其实每次都有打印正确的KEY,不知道目的合在。下面去看汇编
check函数中先调用rc4(“CDD8AAAA500CA8EF8713E1C758175003”) 初始化rc4。来后调用prexor函数对输入的参数进行一轮异或
Prexor函数将字符串与BYTE xor_array[] = { 183,115,128,100,10,204,81,15,29,88,67,119,44,104,202,7,156,164,85,119,3,157,208,191,253,101,2,172,248,131,105,50 };从1开始挨个进行循环异或,
prexor处理完后,把处理过后的数组进行rc4加密
然后与 BYTE encry_data[] = { 196, 243, 228, 110, 198, 157, 94, 18, 69, 27, 52, 91, 68, 162, 205, 155, 56, 241, 34, 116, 158, 77, 111, 66, 152, 103, 174, 84, 123, 234, 91, 133 };进行比较
比较成功,就返回TRUE
所以 第一关为E0EA72E0E1C1BFFBC26E8B47AD9D809C
没事来看看天书,虽然不懂,但也要认真支持一下,谢谢分享!好人啊 小白表示只看到了一堆字母和数字!!大神历害! 厉害大神 哇,都是大佬 这位大佬是08年注册的... 厉害了 完全看不懂 拜一波~ 看起来很厉害对于小白啥都看不懂 看的一脸蒙 楼主厉害了,学习学习