HGAME apache

Linux下六十四位可执行文件

IDA找主函数

输入长度为35的字符串,经过一次函数处理,之后if条件函数的返回值为1,就能判定输入就是flag

函数sub_1447的参数
v3 v3为新申请的地址空间,并且判断函数的参数为v3,说明经过这个函数,输入的字符串经操作后,存储在v3中,
35 输入字符串的长度
v6 v6 = [1,2,3,4] 有点像一个key
v7 输入的字符串

函数sub_1447,

可以根据ida的Findcrypt插件可以看出该函数是一个Tea加密,查看其内容,有>>2、>>3、>>4、>>5的操作,存在常数0x9E3779B9和0x4AB325AA,内循环执行的次数为字符串的长度,外循环的条件为v6 != 0x9E3779B9 * (52 / a2) - 0x4AB325AA

很明显,此加密函数是一个xxtea加密,key = [1,2,3,4]

判断函数sub_1550

提取unk_501C数据

在网上找解密脚本

import struct

_DELTA = 0x9E3779B9

def _long2str(v, w):
n = (len(v) - 1) << 2
if w:
m = v[-1]
if (m < n - 3) or (m > n): return ''
n = m
s = struct.pack('<%iL' % len(v), *v)
return s[0:n] if w else s def _str2long(s, w):
n = len(s)
m = (4 - (n & 3) & 3) + n
s = s.ljust(m, "\0")
v = list(struct.unpack('<%iL' % (m >> 2), s))
if w: v.append(n)
return v v = [0xe74eb323, 0xb7a72836, 0x59ca6fe2, 0x967cc5c1, 0xe7802674, 0x3d2d54e6, 0x8a9d0356, 0x99dcc39c, 0x7026d8ed,
0x6a33fdad, 0xf496550a, 0x5c9c6f9e, 0x1be5d04c, 0x6723ae17, 0x5270a5c2, 0xac42130a, 0x84be67b2, 0x705cc779,
0x5c513d98, 0xfb36da2d, 0x22179645, 0x5ce3529d, 0xd189e1fb, 0xe85bd489, 0x73c8d11f, 0x54b5c196, 0xb67cb490,
0x2117e4ca, 0x9de3f994, 0x2f5aa1aa, 0xa7e801fd, 0xc30d6eab, 0x1baddc9c, 0x3453b04a, 0x92a406f9]
k = [1, 2, 3, 4]
n = len(v) - 1
z = v[n]
y = v[0]
q = 6 + 52 // (n + 1)
sum = (q * _DELTA) & 0xffffffff
while (sum != 0):
e = sum >> 2 & 3
for p in range(n, 0, -1):
z = v[p - 1]
v[p] = (v[p] - ((z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z))) & 0xffffffff
y = v[p]
z = v[n]
v[0] = (v[0] - ((z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[0 & 3 ^ e] ^ z))) & 0xffffffff
y = v[0]
sum = (sum - _DELTA) & 0xffffffff
print(v)
for i in range(len(v)):
print(chr(v[i]), end='')

得到hgame{l00ks_1ike_y0u_f0Und_th3_t34}

最新文章

  1. oracle树形查询 start with connect by
  2. MySQL数据类型-decimal详解
  3. 使用SQL语句逐条更新每条记录
  4. Form文件夹开发步骤
  5. LTE切换与TAU问题
  6. nyoj CO-PRIME 莫比乌斯反演
  7. linux时间管理
  8. play framework (一)
  9. python_ftplib实现通过FTP下载文件
  10. MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用
  11. ajax的访问 WebService 的方法
  12. 你知道HTML标签设计的本意吗? 把HTML标签用到该用的地方去
  13. 转:MFC网络编程学习
  14. Html.text(转载)
  15. 数学思想方法-分布式计算-linux/unix技术基础(5)
  16. php根据用户输入单词,匹配相似单词
  17. 自动测试工具(Jmeter,qtp等)
  18. python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用
  19. centOS连接没问题,使用SecureCRT就不能连接
  20. UOJ 67 新年的毒瘤 - Tarjan

热门文章

  1. 在nodejs中创建cluster
  2. Java中的异常处理机制《》
  3. Redis,JedisPool工具类
  4. html输入框输入显示剩余字数
  5. linux 系统磁盘管理(主分区和逻辑分区)
  6. VScode 连接虚拟机
  7. CodeForces 1119D(差分+前缀和+二分)
  8. poj 2318TOYS
  9. CodeForces - 220B 离散化+莫队算法
  10. HDU-6608 Fansblog(威尔逊定理+素数间隔+逆元)