注册 登录
编程论坛 汇编论坛

论坛不热闹,我来抛砖引玉

菜鸟AB 发布于 2015-08-01 11:49, 4353 次点击
0041e55c    push    edi
0041e55d    jmp    0041e56a
0041e55f    nop
0041e560    mov    al,[esi]
0041e562    inc    esi
0041e563    mov    [edi],al
0041e565    inc    edi
0041e566    add    ebx,ebx
0041e568    jne    0041e571
0041e56a    mov    ebx,[esi]
0041e56c    sub    esi,ffff fffc
0041e56f    adc    ebx,ebx
0041e571    jb    0041e560
0041e573    mov    eax,0000 0001
这是一个反汇编片段,想了好久也无法还原成WIN32汇编
基本能看懂,我的理解:
核心思想是将ESI指向地址的值搬到EDI指向的地址,用EBX控制
琢磨5天了,汇不出原貌,恳请大牛指点
4 回复
#2
zklhp2015-08-01 12:40
程序代码:

    push edi
    jmp @loop
    nop
    @inner:
        mov al, [esi]
        inc esi
        mov [edi], al
        inc edi
        add ebx, ebx
        jne @F
@loop:
    mov ebx, [esi]
    sub esi, 0fffffffcH    ; add esi, 4
    adc ebx, ebx
@@:
    jb @inner
    mov  eax, 1


大概是这个样子的 但搞不懂想干什么
#3
菜鸟AB2015-08-01 13:08
多谢zklhp大牛,我先去研究研究,然后回来汇报
#4
菜鸟AB2015-08-01 13:31
起因,我朋友要考工程劳务员,需要在线学习40小时视频,他没时间,托我帮忙。
学习是每10分钟弹出对话框,如果不点“确定”,永远是10分钟,这样我就要
坐在电脑前每隔10分钟点确定,很烦。

想到做个程序,带定时器,每分钟发送回车消息,网页句柄好象获取成功了,
但发送的消息总不起作用。想到按键精灵,看它怎么发的消息,但生成的精灵
程序加壳,然后转到脱壳,先找个最普通壳UPX练习。上面的代码就是UPX起手式

在次感谢zklhp大牛,您的代码我抄纸上了,躺床上仔细研究
菜鸟一直在努力!!!
#5
菜鸟AB2015-08-01 22:38
        push    edi
        .while    TRUE
            mov    ebx,[esi]
            sub    esi,-4
            adc    ebx,ebx
            .break    .if    !CARRY?
            .while    TRUE
                .break    .if    !CARRY?
                mov    al,[esi]
                inc    esi
                mov    [edi],al
                inc    edi
                add    ebx,ebx
                .break    .if    ZERO?
             .endw
         .break    .if    !CARRY?
        .endw
        mov    eax,1


刚才边玩星际边合计,灵光一闪,设计出这么个怪胎。

好象执行的意思相同,还请大牛们指正。

如果相同的话,还是我这怪胎好看。

[ 本帖最后由 菜鸟AB 于 2015-8-1 23:38 编辑 ]
1