1625-5 王子昂 总结《2017年10月13日》 【连续第378天总结】
A. reversing.kr
B.

AutoHotKey2

解压出来又来了ReadMe
不过这次比较简单,翻译一下是要求让程序正确运行即可

查壳发现又有UPX,upx -d脱下后就能进IDA静态分析了

先运行试试,发现报Exe Corrupted,跟AutoHotKey一样嘛,应该还是自校验吧~
那我看看源程序,结果还是报这个错
这样就没法像AutoHotKey一样借源程序便利啦,不过也对,这次要求是正常运行而不是找数据了嘛

那么乖乖分析自校验的位置吧~
IDA查找字符串,发现有两处引用

那么在OD中弹窗出现时按F12暂停,然后ALT+K查看调用堆栈就能找到具体的call了

锁定sub_4481e0中的call sub_4508c7
171013 逆向-Reversing.kr(AutoHotKey2)
返回值1时将错误提示字符串提供给了sub_43C205,大概率就是弹窗调用了

直接**仍然会报错,再**报错的地方就直接结束了╮(╯_╰)╭

所以只好按部就班过自校验啦
虽然不明白这几个参数是哪来的,不过我们可以先分析一波~

要求Return 0,因此不能落入Label_18和Label_19中关闭文件句柄并return v13
只有函数的最后一行才有return 0~

基本过程跟AutoHotKey一样
171013 逆向-Reversing.kr(AutoHotKey2)
通过文件指针读取本文件的二进制数据流

第一步是以整个文件的除了最后4字节的数据按4字节运算,最后结果异或0xAAAA后与最后4字节比较

运算过程在sub_450F95中,比较复杂,反正动态调试可以直接看到,就不费心去折腾了~
将得到的数据用十六进制编辑器(Winhex/UltraEdit等)写入文件最后4字节就行啦
(注意小端序哦,寄存器中的值和二进制数据顺序不同~)
171013 逆向-Reversing.kr(AutoHotKey2)
接着以倒数第5-8字节作为偏移,要求16个字节与硬编码相同,再下一个字节为03
将硬编码dump出来再通过查找功能即可
171013 逆向-Reversing.kr(AutoHotKey2)
找到索引是0x00032800,写入倒数第二个4字节即可(同样也要注意小端序哦)

再往后是对之后的字节进行读取啥的,就没有我们可以干涉的部分了

这里注意一下,因为我们修改了倒数第5-8字节,因此最后4字节的运算结果改变了,需要重新观察一下并写入(刚开始没反应过来,重新跟着走了一遍才发现╮(╯_╰)╭)

最后写入的8个字节是00 28 03 00 33 C6 2B 36

完成以后运行就显示了不同的东西:
171013 逆向-Reversing.kr(AutoHotKey2)

嗯……英文苦手(:з」∠)
手打下来第一句话拖到翻译里,知道要找的这个人是Eddard Stark的私生子,故事来源于冰与火之歌

在Eddard的维基百科中搜索【私生子】得到结果:
171013 逆向-Reversing.kr(AutoHotKey2)

于是就知道了这货是Jon Snow啦(连姓都不一样了,不愧是私生子

C. 明日计划
DLL注入知识

相关文章:

  • 2021-04-07
  • 2021-08-02
  • 2021-10-03
  • 2022-12-23
  • 2022-12-23
  • 2021-04-08
  • 2021-10-15
  • 2021-09-10
猜你喜欢
  • 2022-01-22
  • 2021-04-01
  • 2021-08-13
  • 2021-12-13
  • 2021-05-31
  • 2021-10-29
  • 2021-11-28
相关资源
相似解决方案