ida生成伪代码报错,百度一下,解决方法:
然后点确定,再次按F5,可以看到报错的地址 400E74
然后按g,输入地址400E74跳转到该位置
在上一行点击光标,然后按alt+k,默认弹出的数值是8,修改为0,确定保存
可以看到左侧地址栏没有负数了,这样就可以按f5生成伪代码了
可以看到主要函数和算法,外层循环22次,内层循环10次, sub_406D90系统自带生成随机数的函数,大概意思是生成十次随机数对22取余数后进行验证??
只需要把22个字符全部验证一边就好了,不用管那个10次的循环。
arr = [0x5f, 0x0f2, 0x5e, 0x8b, 0x4e, 0x0e, 0x0a3, 0x0aa, 0x0c7, 0x93, 0x81, 0x3d, 0x5f, 0x74, 0x0a3, 0x9, 0x91, 0x2b, 0x49, 0x28, 0x93, 0x67, 0x0, 0x0] flag = '' for i in range(22): v4 = i + 1 v8 = 0 v9 = 0 while v8 < v4: v8 = v8 + 1 v9 = 1828812941 * v9 + 12345 v6 = arr[i] #print v6 ^ v9 c = (v6 ^ v9) & 0xff #print c flag += chr(c) print flag