fyc132 发表于 2018-5-16 18:42

决赛第二题第一小题

本帖最后由 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

blackid 发表于 2019-1-15 19:14


没事来看看天书,虽然不懂,但也要认真支持一下,谢谢分享!好人啊

gunxsword 发表于 2018-5-16 19:15

小白表示只看到了一堆字母和数字!!大神历害!

kissb80 发表于 2018-5-16 19:28

厉害大神

certainMreleven 发表于 2018-5-16 19:31

哇,都是大佬

nengtony 发表于 2018-5-16 19:48

这位大佬是08年注册的...

cl1107 发表于 2018-5-16 20:27

厉害了 完全看不懂

都叫我小智哥 发表于 2018-5-16 20:58

拜一波~

kisswdhc 发表于 2018-5-16 21:51

看起来很厉害对于小白啥都看不懂

wuyachizi 发表于 2018-5-17 08:17

看的一脸蒙

Nightmoon 发表于 2018-5-17 08:21

楼主厉害了,学习学习
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 决赛第二题第一小题