飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5031|回复: 13

[求助] ACProtect 不知如何修复IAT

[复制链接]
  • TA的每日心情
    擦汗
    2019-3-8 22:25
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2014-5-3 17:23:25 | 显示全部楼层 |阅读模式
    本帖最后由 尿尿不洗手 于 2014-5-3 17:28 编辑

    查壳 发现是ACProtect1.x Delphi程序
    通过 Delphi程序第一个CALL的特征码找到OEP






    然后就想着修复一下IAT就可以脱壳了……想法是好的……


    然后跟进第一个call


    发现 GetModuleHandleA 变成了一个CALL的形式
    进CALL 发现又是jmp 继续跟啊跟


    终于跳到 GetModuleHandle函数了


    请教各位前辈们,该怎么修复这个程序的IAT。


    附上连接,有时间的话请帮忙看一下:                                                      
    http://pan.baidu.com/s/1c0AabUo






    来自群组: 易学传真

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2014-5-3 21:37:55 | 显示全部楼层
    哈哈哈哈  ,我要好好学习
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2014-5-4 10:32:20 | 显示全部楼层
    ACP 我没脱过,看了一下你的描述,证明你有些基础的,其实很简单

    停在 OEP 后,写个脚本,搜索代码段内,所有 call 入口为 e9 的调用,找到后,模拟执行一下

    (不是用 sti ,是使用计算下一步跳转位置,静态模拟,速度快,只要跳转到的地址大于  0x50000000

    那么马上把该地址填充调用方,说简单,但你要学习一下脚本的编写
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2019-3-8 22:25
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-5-4 11:35:13 | 显示全部楼层
    lgjxj 发表于 2014-5-4 10:32
    ACP 我没脱过,看了一下你的描述,证明你有些基础的,其实很简单

    停在 OEP 后,写个脚本,搜索代码段内 ...

    谢谢前辈的指点 有了思路豁然开朗 脚本会一点点,不过一直没怎么用过,现在先来试一试了。。
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2019-3-8 22:25
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-5-4 11:55:04 | 显示全部楼层
    尿尿不洗手 发表于 2014-5-4 11:35
    谢谢前辈的指点 有了思路豁然开朗 脚本会一点点,不过一直没怎么用过,现在先来试一试了。。

    前辈,又来请教一个问题,这个程序下的断点会在OD重新加载之后消失,请问这个是我OD的问题,还是说程序能清楚我的断点,CC断点,硬件断点都不见了。换了个OD断点还是会被清除掉
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2014-5-4 12:38:48 | 显示全部楼层
    程序问题,其实这个东西很古老了,不需要上面的做法,可以从对 某一调用的 e9 处,下硬件写入断点看看那里写入的一次过就可以修正

    我上面说的方法可以说太高级了,是我专门对付  vmp se 用的, Acp 出来的时候,就是加了花,硬件写入断点猪可以搞定了
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2019-3-8 22:25
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-5-4 13:02:40 | 显示全部楼层
    lgjxj 发表于 2014-5-4 12:38
    程序问题,其实这个东西很古老了,不需要上面的做法,可以从对 某一调用的 e9 处,下硬件写入断点看看那里 ...

    大牛们都玩VMP SE膜拜啊。又跟了一下GetModuleHandle的调用,发最后的JE不是跳到API的第一句,API的前几句被放在N多JMP的过程中执行了。。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2014-5-4 16:42:20 | 显示全部楼层
    本帖最后由 lgjxj 于 2014-5-4 16:44 编辑

    帮你看了看,第一次分析 ACP ,感觉和现在的壳比起来温柔多了,帮你一下,后面的你自己完成 (这样才有意思 )

    其实也不是帮你,我就真的没分析过这个老壳,顺手看看 。。。。
    你现在的任务就是想个办法,把 [esp+8] 的 API 地址保存起来,然后 在  2_b  处废掉这条代码,然后把保存的填回去(进步靠自己)


    var i
    var 1_b
    var 2_b
    bc
    bphwcall

    gpa "GetModuleHandleA", "kernel32.dll"
    find $RESULT,#ebed#
    go $RESULT
    STI
    sti
    find eip,#8BC65EC9C20400#
    bp $RESULT+4


    l:
    esto
    inc i
    cmp i,12
    je o
    jmp l
    o:
    bc
    sti
    findmem #606681D901F661B8DD36B46105B3F36DBA0571D5DDE3E912000000#,00A00000
    mov 1_b,$RESULT

    findmem #83EC04891C2488CB5088DC88228B042483C4048B1C2481C4040000008B0C24#,00A00000
    mov 2_b,$RESULT+b

    log 1_b       // 断在这里,esp+8  =  API 地址
    log 2_b       // 这里负责写入 E9 (JMP ) 跳来跳去的,呵呵




    PYG19周年生日快乐!

    该用户从未签到

    发表于 2014-5-4 18:08:07 | 显示全部楼层
    哦,对,上面调试是在 WIN7 上进行的,如果是 xp ,那么脚本开头修改为


    var i
    var 1_b
    var 2_b
    bc
    bphwcall

    gpa "GetModuleHandleA", "kernel32.dll"

    find $RESULT,#8BC65EC9C20400#
    bp $RESULT+4

    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2019-3-8 22:25
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2014-5-4 20:14:00 | 显示全部楼层
    lgjxj 发表于 2014-5-4 18:08
    哦,对,上面调试是在 WIN7 上进行的,如果是 xp ,那么脚本开头修改为

    下午有课 刚刚回来看到您给我回的帖子,十分感谢这么周全的解答,这对我们这样的新手来说是相当鼓舞人心的,您说的对,后面的自己完成才会有意思。等把ACProtect会的差不多了我会写一篇帖子来帮助我这样的新手作为参考。。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表