逆向分析-IDA pro恶意代码(Crackme.exe)静态逆向分析

1.认识IDA Pro

交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!

2.Crackme基础分析

1)双击运行恶意代码Crackme.exe,提示语句为haha.Crack me,任意输入数据,提示语句为:try again! haha.Crack me

2)使用IDA pro打开恶意代码Crackme.exe。发现只有2个函数,导入函数很少,由此怀疑恶意代码被加壳了。

3)使用查壳工具PEID,查看恶意代码Crackme.exe添加了( UPX )壳

4)使用UPX Tool对恶意代码Crackme.exe脱壳,选择( 解压缩 ),点击开始按钮进行脱壳。我们可以看出这是一个(压缩壳 

5)将脱壳后的恶意代码Crackme.exe再次使用IDA pro打开,发现有(200多 )个函数,主程序的入口函数为(_main ),入口函数的起始地址为( 0040100A  ),随后程序跳转到地址(_main_0 )

6)_main_0中,按空格键切换视图模式,阅读主函数核心代码,如截图所示主函数主要代码结构为(条件分支 ),如果输入错误将输出提示语句(try agin!);如果用户输入正确将输出提示语句( Congratulation!\n)。

7)分析上图汇编程序,要想函数输出提示语句“Congratulation!”,需要内存单元[ebp+var_4]的值为( 0),此时IDA会向(绿 )色箭头处执行。

3.Crackme跟踪分析

1)按空格键切换视图模式。恶意代码密码验证前调用的子函数名称为(sub_401005);子函数入口地址为(00401005),随后,程序跳转到地址( 00401020)处

2)按空格键切换视图模式。子函数sub_00401020 中语句 mov     ecx, [ebp+Str1];   [ebp+Str1]中存储的数据为(用户输入数据)

3)F5查看源程序。该函数实现的功能为:依次遍历(用户输入数据),将每个字符ASCCI(  +3)形成新的字符串,随后将新的字符串与(程序预先设置数据 "zxmlqj")进行比较,返回比较结果。

4)返回到主调函数,判断比较结果是否为0,当比较结果为(0)破解成功。换句话说,就是判断用户输入字符串依次遍历(+3)后,是否等于程序预先设置字符串("zxmlqj),如果等于破解成功,否正继续输入。所以破解密码计算公式为("zxmlqj"-3),破解需要输入的正确的字符串为("wujing")。

4.破解恶意程序

1)找到程序条件跳转逻辑可知,如下代码决定了程序需否跳转到Congratulation处,为此要想输入错误密码也可成功,只需将( jz )修改为( jmp )即可更改程序逻辑。

2)依次选中:编辑edit→修补程序patch program→汇编Assemble

3)将jz改为jmp后确定

4)依次选中:编辑→修补程序→修补程序引用到输入文件→确定

5)打开exe文件,运行查看后修改情况,输入错误密码成功登陆,完成破解。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值