方法没有使用OD简单,但是对于汇编不好的童鞋还是有帮助的。。。

1、打开IDA

西普CTF-该题不简单-以夕阳落款

2、搜索关键字,比如“密钥无效”等这类词语,会显示如下

西普CTF-该题不简单-以夕阳落款

3、搜索到后,随便点击一个变量,变成黄色后,右击--Xrefs graph to ,便可查看是从什么方法执行到此变量的,如下图红框内所示

西普CTF-该题不简单-以夕阳落款

4、在左侧的Function name中找到该方法,双击打开,按F5查看源码西普CTF-该题不简单-以夕阳落款

5、可见有一个sub_4011D0的函数,双击查看

西普CTF-该题不简单-以夕阳落款

6、贴出关键代码,如下

西普CTF-该题不简单-以夕阳落款

注意:1、0x42是16进制。一开始我当成42取摸导致不成功,后来才发现...

2、lstracat()是一个函数,具体功能自行百度

根据上面,自写一段代码

String s = "hello";
int i = 0;
char[] ch = s.toCharArray();
if(s.length() != 0) {
	do {
		char c = (char) ((char)(i + i * (int)ch[i] * (int)ch[i]) % 66 + 33);
		++i;
		System.out.print(c);
	}
	while(i < s.length());

可得出后面的几位密钥为:!GA0U然后在根据

strcpy(String, "Happy@");
lstrcatA(String, &String2);

就可以得到正确的密钥结果。
Flag:

温馨提示: 此处内容需要评论本文后刷新才能查看,支付2元即可直接查看所有Flag。

小广告:关于获取西普实验吧所有Writeup请点击这里查看索引

查看所有Flag需要付费,需要获取所有Flag的童鞋请访问这里成为付费用户,可以自助把自己的注册邮箱加入网站白名单,即可免回复看到本站所有Flag

Flag大全地址:所有Flag

PS:本站不是实验吧的官方站点,纯粹是个人博客,收取Flag费用仅是维持服务器费用,做站不易,且行窃珍惜,如果喜欢我的博客,愿意捐赠的,可以扫描下面的二维码

微信二维码:
支付宝二维码: