e3.exe的逆向分析

e3.exe的逆向分析

运行截图

image-20201112112020709

逆向思路

提示如下:

image-20201112112145143

  1. 使用IDR加载Delphi程序,导出Map文件,将Map文件导入OD。

  2. 使用Delphi逆向工具Darkde4

    image-20201112112649506

    可以看到,Panel1有两个方法,单击和双击,是一个按钮

    image-20201112112809706

    FromCreate 窗体的创建事件

    chkcode 校验代码

    KeyUp 响应的键盘的弹起

    DbClick 按钮的双击事件

    Click 按钮的单击事件

  3. 通过1得到了几个事件的RVA,接下来进行分析,首先是Click事件:

拖入OD

右键复制Click的RVA

打开OD,ctrl + G 粘贴点击OK

image-20201112113700321

F2设置断点

image-20201112113757639

运行测试

输入一组用户名和注册码,双击之后单步调试

image-20201112135924618

出现用户名:

image-20201112142831970

image-20201112143032497

此处getText为获取用户名。

image-20201112143546620

获取用户名长度,用户名长度+0x1E(30)

image-20201112143728625

出现“32”

image-20201112142858046

字符串拼接:

image-20201112143816055

循环0x13次:

image-20201112140103376

关键跳转:

image-20201112144807917

  1. 获取用户名

  2. 获取用户名长度 将长度加上0x1E

  3. 将长度转为字符串

  4. 字符串拼接 拼接为长度+用户名+循环次数

  5. 整个算法循环18次 最后的结果如上图

  6. [esi+0x30C]的值必须是0x85

  7. 分析双击事件

    image-20201112145255045

    获取长度

    长度+0x9

    长度转str

    循环:

    image-20201112145714553

    字符串拼接:长度+用户名+循环次数

    image-20201112145758393

    [esi+0x30C]和0x3E作比较,如果成立,就把[esi+0x30C]赋值为0x85,也就满足了单击事件的条件

    [esi+0x30C]的值必须为0x3E

  8. 有一个地方是把0x3E赋值给了[esi+0x30C]。

    OD中,右键->查找所有常量,输入3E,看看能不能找到mov [esi+0x30C],0x3E这样一条指令。如果能,那么这个就是真正校验的地方。

    image-20201112150021636

    跟进:

    image-20201112150156441

    开头:

    image-20201112150216381

    注释显示这个是chkcode的校验事件下断点

  9. 运行

    注册码刚输入1就停住了,分析

    image-20201112195626009

    发现可疑字符串:

    image-20201113202605293

    image-20201112231655675

    直接拦截读取edx,使用keymake制作内存注册机:

    image-20201113201759959

    image-20201113201911026

    image-20201113201949716

    成功,接着分析算法·,尝试制作算法注册机

    image-20201113202904189

    分析0x951C68 位置处何时写入,设置硬件断点

    image-20201113202748542

    keyup中统计输入字符:

    image-20201112222615805

    首先获取用户名长度 然后将用户名长度+5,接着进行字符串拼接 拼接方式为黑头Sun Bird(用户名长度+5)dseloffc-012-OK(用户名),拼接好的字符串就是密码。

  10. 结果:

    image-20201112150942321

    image-20201113203445323

接方式为黑头Sun Bird(用户名长度+5)dseloffc-012-OK(用户名),拼接好的字符串就是密码。

  1. 结果:

image-20201112150942321

image-20201113203445323

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值