首页
社区
课程
招聘
[原创]UPX加壳DLL脱壳手记(请版主帮忙看看!!)
发表于: 2005-2-22 21:37 4791

[原创]UPX加壳DLL脱壳手记(请版主帮忙看看!!)

2005-2-22 21:37
4791
近来在脱一个UPX加 的DLL壳时遇到一些问题,希望版主帮忙看看错出在哪了:(
在看了《加密与解密》第二版后,找了个程序作试验,由于我现在没有上传附件的权限,现把我解密的过程写出来,望版主帮忙:)
用Ollydbg110加载目标程序TestDll.dll后程序中断到一下位置:

0096F920 > 807C24 08 01     CMP BYTE PTR SS:[ESP+8],1
0096F925   0F85 91010000    JNZ testdll.0096FABC
0096F92B   60               PUSHAD
0096F92C   BE 00D09100      MOV ESI,testdll.0091D000
0096F931   8DBE 0040F5FF    LEA EDI,DWORD PTR DS:[ESI+FFF54000]
0096F937   57               PUSH EDI
0096F938   83CD FF          OR EBP,FFFFFFFF
0096F93B   EB 0D            JMP SHORT testdll.0096F94A

按照脱UPX壳的经验,向下找到此处:

0096FA90   31C0             XOR EAX,EAX
0096FA92   8A07             MOV AL,BYTE PTR DS:[EDI]  //edi=966bd5-当前基址870000=F6BD5,应该是重定位表的RVA
0096FA94   47               INC EDI
0096FA95   09C0             OR EAX,EAX
0096FA97   74 22            JE SHORT testdll.0096FABB

0096FA99   3C EF            CMP AL,0EF
0096FA9B   77 11            JA SHORT testdll.0096FAAE
0096FA9D   01C3             ADD EBX,EAX
0096FA9F   8B03             MOV EAX,DWORD PTR DS:[EBX]
0096FAA1   86C4             XCHG AH,AL
0096FAA3   C1C0 10          ROL EAX,10
0096FAA6   86C4             XCHG AH,AL
0096FAA8   01F0             ADD EAX,ESI
0096FAAA   8903             MOV DWORD PTR DS:[EBX],EAX
0096FAAC  ^EB E2            JMP SHORT testdll.0096FA90
0096FAAE   24 0F            AND AL,0F
0096FAB0   C1E0 10          SHL EAX,10
0096FAB3   66:8B07          MOV AX,WORD PTR DS:[EDI]
0096FAB6   83C7 02          ADD EDI,2
0096FAB9  ^EB E2            JMP SHORT testdll.0096FA9D
0096FABB   61               POPAD  //在这下断,此时EDI=96E318,为重定位表的结束地址
0096FABC  ^E9 27B4FBFF      JMP testdll.0092AEE8  //此处跳到程序入口EOP处

0092AEE8   55               PUSH EBP  //在这用LordPE中Dump出testdll.dll得到dumped.dll
0092AEE9   8BEC             MOV EBP,ESP
0092AEEB   83C4 C4          ADD ESP,-3C
0092AEEE   B8 58AB9200      MOV EAX,testdll.0092AB58
0092AEF3   E8 30B9F4FF      CALL testdll.00876828
0092AEF8   E8 F395F4FF      CALL testdll.008744F0
0092AEFD   8D40 00          LEA EAX,DWORD PTR DS:[EAX]
0092AF00   0000             ADD BYTE PTR DS:[EAX],AL

下面问题出现了,在testdll.dll中并不能找到有API调用的位置,怎么才能找到IAT开始和结束的位置,请版主指点一下!!!

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己顶一下:)
2005-2-23 08:57
0
雪    币: 154
活跃值: (216)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
要学习的话,你应该自己用UPX给DLL加壳,再把这个壳脱掉。当初我在培训班那会儿就是这样子搞的。
2005-2-23 09:03
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
先脱书中的例子
2005-2-23 09:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢大家的指点,我正在努力:)
2005-2-24 10:02
0
游客
登录 | 注册 方可回帖
返回
//