首页
社区
课程
招聘
[原创]ida脚本还原加密字符串
2016-4-4 15:38 13531

[原创]ida脚本还原加密字符串

2016-4-4 15:38
13531
首先说下小弟也是小白,有讲的不对的地方请见谅啊,特别是python是上午刚学的,可能有的地方写的不合适望见谅,附件里有那个crackme。分析论坛里的一个crackme的时候,觉得那个做的挺猥琐的,就写了个脚本模拟汇编语言行为。
from binascii import *
from idaapi import *
def decrypy(data):  #string
    result="";
    eax=0;
    ecx=0;
    ebx=0;
    #esi=0;

    esi=data;
    type(esi);
   
    #while ecx<len(data):
    eax=1;
    while eax!=0:
        eax=ord(data[ecx])
        #Message(chr(eax));
        #Message("\n");
        ebx=ecx+1
        eax=eax^ebx
        
        #esi[ecx]=eax
        result+=chr(eax)
        
        #Message(result);
        Message("\n");
        ecx+=1
        if(eax==0):
            ecx=len(data)
            eax=0
            return result
        eax=eax | eax
    result
#52 67 77 51 6B 6E 66 66  6D 66 6E 68 48 76 6C 75
#61 66 7A 7B 7B 50 7E 74  6D 7F 69 1C 4C 67 70 77
#64 61 62 4A 66 72 4A 0C  00 00 00 00 00 00 00 00
key=unhexlify("52 67 77 51 6B 6E 66 66  6D 66 6E 68 48 76 6C 75 61 66 7A 7B 7B 50 7E 74  6D 7F 69 1C 4C 67 70 77 ".replace(" ",''))
#Message(key)
Message("\n")
decrypy(key)
Message(decrypy(key))

//下面是ida的代码
.text:00401000 sub_401000      proc near               ; CODE XREF: sub_4010A2+Ap
.text:00401000
.text:00401000 arg_0           = dword ptr  8
.text:00401000
.text:00401000                 push    ebp
.text:00401001                 mov     ebp, esp        ; esp,key1指针,返回地址
.text:00401003                 push    esi
.text:00401004                 push    ecx
.text:00401005                 push    eax
.text:00401006                 push    ebx
.text:00401007                 mov     esi, [ebp+arg_0] ; 取得最后一个入栈的参数,key1指针
.text:0040100A                 xor     ecx, ecx
.text:0040100C                 xor     ebx, ebx
.text:0040100E
.text:0040100E loc_40100E:                             ; CODE XREF: sub_401000+1Dj
.text:0040100E                 movsx   eax, byte ptr [ecx+esi]
.text:00401012                 lea     ebx, [ecx+1]
.text:00401015                 xor     eax, ebx
.text:00401017                 mov     [ecx+esi], al
.text:0040101A                 inc     ecx
.text:0040101B                 or      al, al
.text:0040101D                 jnz     short loc_40100E
.text:0040101F                 pop     ebx
.text:00401020                 pop     eax
.text:00401021                 pop     ecx
.text:00401022                 pop     esi
.text:00401023                 leave
.text:00401024                 retn    4
.text:00401024 sub_401000      endp

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 96
活跃值: (123)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
川美 2016-4-4 19:19
2
0
支持一下
游客
登录 | 注册 方可回帖
返回