首页
社区
课程
招聘
[原创]reversing.kr第七题Position普通版本+angr版本
发表于: 2019-1-14 14:43 3402

[原创]reversing.kr第七题Position普通版本+angr版本

2019-1-14 14:43
3402
1.peid查壳,程序无壳,运行程序发现没有什么按钮之类的,直接输入用户名和序列号就会显示出wrong。
2.od载入搜索关键字wrong定位关键代码段(本来想用ida载入程序的,但是ida载入程序搜索不到关键字符串)
3.在od中定位关键字符串之后本来想在ida中通过快捷键g跳转到关键位置处的,但是发现od载入的imagebase是0xca00000,而ida载入的imagebase是0x400000
重新载入ida手动加载程序,修改加载的imagebase为0xca0000,
然后跳转到关键位置0xca1cd0处,使用f5大法。
所以关键函数就是sub_CA1740了,这里只需要对这个函数进行分析就好了。
这个函数的大体思路就是经过一系列的if条件判断,判断成功之后会返回1(成功的标志)
4.下面开始对这个函数进行分析
1)最开始输出长度为4,通过od动态调试得到的答案
2) CString::GetAt(0); 就是把 一个 CString 对象里 的字符串 中的第一个字符,把它的ASCII 值 送返回来。 v3保存的是位置,判断输入的字符是否在a~z之间
3)将除了第一个字符的字符做比较,如果第2-第4个字符和第一个字符相等,则直接跳到退出窗口。
4)这一步又构成一个循环,将v1+1,跳转到label_7,这里的功能就是说输入的字符不能有重复的
5)变量v51存放的是输入的序列号,v51-12存放的是输入序列号的长度,长度要为11,然后输入序列号的第五位要位‘-’
6)对name的第一位进行变换,v50存放的是输入的name变量
7)对输入的name第二位进行变换
8)GetBuffer: 该函数功能:获取指定缓冲区里的内容大小的指针,从而进行修改,例如:char *p=NULL; p=variable(变量).GetBuffer(m_strWrite.GetLength());
列:
      CString s( "abcd" );//定义一个CString s并且初始化为abcd
      LPTSTR p = s.GetBuffer( 10 );//定义一个指针指向LPTSTR并接受GetBuffer所返回的地址
      lstrcpy( p, _T("Hello") ); // directly access CString buffer//使用Istrcpy将Hello]复制到该buffer中
      afxDump << "CString s " << s << "\n";这时候s="Hello";
将v52处的字符和v51处的字符进行比较,v51存放的是输入的序列号。现在需要弄清楚v51处存放的值是多少。
GetBuffer(&v52)使变量52指向了某个字符串的位置。0x0101D3E8
itow_s()函数的作用就是将输入0x0101D3E8处的值设置位V7+v9(这里使通过od动态调试分析得到的结果)
这里算是有思路了,就使将变换之后的name和serial进行比较,看是否满足条件。

9)下面对name的第二位和第三位进行变换
10)然后进行相似的比较操作:
11)当满足所有的条件的时候,就能够得到正确的答案了。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-1-17 14:22 被wwzzww编辑 ,原因:
上传的附件:
收藏
免费 2
支持
分享
最新回复 (3)
雪    币: 13650
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

5.所以最终输入的name和serial要满足下面的条件:name长度为4serial长度为11且第5位为'-'name经过上面的变换之后要和serial相等。

为什么我总觉得这步可以用z3约束求解器去求?

2019-1-14 16:43
0
雪    币: 7285
活跃值: (780)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
3
我暂时还没学过z3呢,不过我又上传了一个angr的解题代码,我也是才开始学习angr,你可以看看,我觉得代码还可以完善,欢迎指教
2019-1-14 17:21
0
雪    币: 13650
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
angr的state.solver实际上就是调用的z3。
那个0x30我觉得可以先定义成变量。
2019-1-14 23:32
0
游客
登录 | 注册 方可回帖
返回
//