reversing.kr AutoHotKey1 WriteUp

好久没有做题了,花了几天磕磕绊绊做出了这个。

网站下载下压缩包,解压出来两个文件,一个

ahk.exe,一个readme.txt.ReadMe.txt里的内容为


AuthKey = un_md5(DecryptKey) + " " + un_md5(EXE's Key)


完全搞不懂含义。

运行了Exe看看,启动了打开了一个对话框

c95029024576c2dbc11826682719209de83.jpg

随意输入点击ok,程序直接结束

一开始对autohotkey没有任何了解,以为就这就是一个一般的对话框程序。用Ida打开程序,发现是Upx加壳的,用upx脱壳后再打开。用ResourceHacker打开可执行文件,查看对话框相关资源,再从代码中找对话框的消息处理程序,找了几个明显的窗口消息处理函数都对不上号,一脸懵逼。调试看看,直接弹出对话框提示Exe Corrupt.有点崩溃,尝试去看了看弹出Exe Corrupt的位置,找到了,但是对解决问题没有什么帮助。

注意到文件中有不少字符串。通过再网上搜索字符串,发现这个exe程序应该是引用了AutoHotKey的代码,一开始以为是引用了静态库之类的,然后比对代码, 发现,程序的入口函数和AutoHotKey的主入口函数一模一样,很怪异。AHK的代码中竟然直接定义了从Exe中找到的对话框。

看了AutoHotKey项目的说明,发现似乎是个脚本引擎,还提供将脚本转化成EXE的形式,那么这个程序很可能是个被转成exe的脚本。尝试从可执行文件中找类似脚本的文本,没有找到。

发现官方有提供从Exe中恢复成脚本的工具。该工具的命令为 Exe2Ahk.exe CompiledScript.exe [password]。

似乎一切说的通了,exe是ahk脚本加密生成的,脚本运行时启动对话框,输入key,点击确定后脚本判断key是否正确,ReadMe中提到AuthKey 的两个要素都有了,这个就是真相。

剩下的就是找密码了。密码应该是以某种方式存在与可执行文件上,揭秘程序从exe中获取密码的相关信息与输入进行比对,进行判断。

备份原始程序后,先尝试以123456进行解密,揭秘程序返回 Bad Password.

用IDA分析解密程序,找到输出Bad Password的地方

fd3f262e8e65b697921ffcd0447ef26deb2.jpg

a1为5时输出BadPassword.通过交叉应用找到,找到调用该函数的地方,在主函数中

d4922b498f08363f7f1c7981e52815b0737.jpg

关键就是sub_401476这个函数了

82c9a59f3a5167de1e84eb6646cfde501b1.jpg

中间进行了一系列读 以及运算,在我烦恼可能要分析他运算的含义时,发现,他竟然将计算后的结果与输入的Password直接比对。这意味着可以忽略他的运算方法,直接调试断点到此处就可以从内存中取出明文密码。 如果他是将Password加密后与文件中的密文对比,那我可能还需要费一些功夫。

调试一下,拿到揭秘密钥220226394582d7117410e3c021748c2a,在用揭秘程序解出脚本

d336292e3938fb5063a06f926a25cb189d7.jpg

现在DecryptKey和EXE's Key都有了,找到一个Md5解密的网站处理下得到AuthKey   isolated pawn

拿到网站上验证通过

转载于:https://my.oschina.net/u/1171187/blog/3002472

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值