【文章标题】: 用Ollydbg手脱UPX加壳的jxjl外挂的jxdata.dll
【文章作者】: wenxinoooo
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
一、得到重定位表RVA和OEP
代码:--------------------------------------------------------------------------------
00A758A0 > 807C24 08 01 CMP BYTE PTR SS:[ESP+8],1----------进入OD后停在这
00A758A5 0F85 9A010000 JNZ jxdata.00A75A45
00A758AB 60 PUSHAD
不用跟踪,Ctrl+S 在当前位置下搜索命令序列:
代码:--------------------------------------------------------------------------------
xchg ah,al
rol eax,10
xchg ah,al
add eax,esi
找到在00A75A1B处,在其上mov al,byte ptr ds:[edi]处下断,F9运行,断下
代码:--------------------------------------------------------------------------------
00A75A1B 8A07 MOV AL,BYTE PTR DS:[EDI]---------EDI=00A69AD9-当前基址00870000=001F9AD9 ★ 这就是重定位表的RVA
00A75A1D 47 INC EDI
00A75A1E 09C0 OR EAX,EAX
00A75A20 74 22 JE SHORT jxdata.00A75A44
00A75A22 3C EF CMP AL,0EF
00A75A24 77 11 JA SHORT jxdata.00A75A37
00A75A26 01C3 ADD EBX,EAX
00A75A28 8B03 MOV EAX,DWORD PTR DS:[EBX]
00A75A2A 86C4 XCHG AH,AL----------------------找到这里
00A75A2C C1C0 10 ROL EAX,10
00A75A2F 86C4 XCHG AH,AL
00A75A31 01F0 ADD EAX,ESI
00A75A33 8903 MOV DWORD PTR DS:[EBX],EAX
00A75A35 ^ EB E2 JMP SHORT jxdata.00A75A19
00A75A37 24 0F AND AL,0F
00A75A39 C1E0 10 SHL EAX,10
00A75A3C 66:8B07 MOV AX,WORD PTR DS:[EDI]
00A75A3F 83C7 02 ADD EDI,2
00A75A42 ^ EB E2 JMP SHORT jxdata.00A75A26
00A75A44 61 POPAD
00A75A45 - E9 B6B5DFFF JMP jxdata.00871000--------------//飞向光明之点巅
--------------------------------------------------------------------------------------------
在00A75A44处下断,F9运行,断下,重定位数据处理完毕
当我们在00A75A44处中断下来时,EDI=00A740B0-当前基址00870000=002040B0,就是重定位表结束的地址
--------------------------------------------------------------------------------------------
00871000 /EB 10 JMP SHORT jxdata.00871012--------OEP
00871002 |66:623A BOUND DI,DWORD PTR DS:[EDX]
00871005 |43 INC EBX
00871006 |2B2B SUB EBP,DWORD PTR DS:[EBX]
00871008 |48 DEC EAX
00871009 |4F DEC EDI
0087100A |4F DEC EDI
0087100B |4B DEC EBX
0087100C |90 NOP
0087100D -|E9 E0D59C00 JMP 0123E5F2
00871012 \A1 67D59C00 MOV EAX,DWORD PTR DS:[9CD567]
00871017 C1E0 02 SHL EAX,2
0087101A A3 6BD59C00 MOV DWORD PTR DS:[9CD56B],EAX
0087101F 8B4424 08 MOV EAX,DWORD PTR SS:[ESP+8]
00871023 A3 D9D59C00 MOV DWORD PTR DS:[9CD5D9],EAX
00871028 FF1485 C9D59C00 CALL DWORD PTR DS:[EAX*4+9CD5C9]
---------------------------------------------------------------------------
用LordPE选中Ollydbg的loaddll.exe的进程,在下面的列表里选择jxdata.dll,然后完整脱壳,得到dumped.dll
二、输入表
找到API调用,
如:00871041 E8 74AA1500 CALL dumped00.009CBABA ; JMP 到 kernel32.GetVersion
跟随,来到
009CBABA - FF25 6814A100 JMP DWORD PTR DS:[A11468] ; kernel32.GetVersion
数据窗口中跟随内存,如下:
上下看到许多函数地址,很明显的可以找到IAT开始和结束的地址:
00A11360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00A11370 00 00 00 00 47 9B 80 7C 77 D0 80 7C EE 86 82 7C ....G泙|w衻|顔倈
00A11380 AC 17 82 7C AD 08 83 7C 24 1A 80 7C 5C 94 80 7C ?倈?億$€|\攢|
00A11390 37 06 81 7C 8A 18 93 7C AB 1E 83 7C 05 10 92 7C 7亅?搢?億抾
00A113A0 11 82 83 7C DA CD 81 7C 58 C0 80 7C 5D 06 83 7C 們|谕亅X纮|]億
00A113B0 66 E8 80 7C D7 ED 80 7C D9 37 81 7C B1 4E 83 7C f鑰|醉€|?亅盢億
00A113C0 89 BE 80 7C A0 F7 82 7C 77 DF 81 7C DE AB 80 7C 壘€|狑倈w邅|瞢€|
00A113D0 C2 60 82 7C 15 99 80 7C 76 2E 81 7C 1D 2F 81 7C 耟倈檧|v.亅/亅
00A113E0 FE 4F 83 7C F5 DD 80 7C 20 99 80 7C 28 97 80 7C 﨩億踺€| 檧|(梹|
00A113F0 EE 61 83 7C ED 02 83 7C E3 14 82 7C 5B CF 81 7C 頰億?億?倈[蟻|
00A11400 F2 4A 81 7C 17 AE 81 7C 35 14 82 7C 3C 15 81 7C 騄亅畞|5倈<亅
00A11410 77 0A 81 7C 51 0E 81 7C FC 38 81 7C 31 03 93 7C w.亅Q亅?亅1搢
00A11420 D4 A7 80 7C 62 D2 80 7C CF B4 80 7C A1 B6 80 7C 鸳€|b襽|洗€|《€|
00A11430 A7 27 81 7C 56 2B 83 7C A0 AD 80 7C C1 AB 80 7C ?亅V+億牠€|莲€|
00A11440 EE 1E 80 7C 39 2F 81 7C 0C 8A 83 7C 90 A4 80 7C ?€|9/亅.妰|悿€|
00A11450 3D BF 80 7C B2 27 81 7C 56 2D 81 7C 15 A4 80 7C =縺|?亅V-亅|
00A11460 9C 92 80 7C 10 9F 80 7C DA 11 81 7C DE 2A 81 7C 湌€|焵|?亅?亅
00A11470 A9 60 83 7C 2D FD 80 7C BB 0B 83 7C 2F FC 80 7C ー億-齹|?億/鼆|
00A11480 B9 4C 83 7C 19 FF 80 7C B9 23 81 7C 82 FE 80 7C 筁億€|?亅傼€|
00A11490 D4 05 93 7C 3D 04 93 7C F1 9E 80 7C 7A 97 80 7C ?搢=搢駷€|z梹|
00A114A0 66 97 80 7C 8B C4 81 7C E8 8D 83 7C ED 10 92 7C f梹|嬆亅鑽億?抾
00A114B0 77 1D 80 7C 4F 1D 80 7C B5 9F 80 7C 8D 99 80 7C w€|O€|禑€|崣€|
00A114C0 2F 99 80 7C 97 CC 80 7C 05 B9 80 7C C6 97 80 7C /檧|椞€|箑|茥€|
00A114D0 F8 9B 80 7C 76 BB 80 7C E1 09 83 7C 09 2A 81 7C 鴽€|v粈|?億.*亅
00A114E0 0E 18 80 7C CC 21 80 7C 3B A0 80 7C F7 28 83 7C €|?€|;爛|?億
00A114F0 40 7A 95 7C 8B B5 81 7C DD 60 83 7C 44 20 83 7C @z晐嫷亅輅億D 億
00A11500 78 34 83 7C 0F AC 80 7C 17 A0 80 7C 82 27 81 7C x4億瑎|爛|?亅
00A11510 8E 0B 81 7C 97 CC 80 7C 40 03 93 7C BA BB 81 7C ?亅椞€|@搢夯亅
00A11520 69 BC 80 7C 42 24 80 7C 16 1E 80 7C 9F 2D 81 7C i紑|B$€|€|?亅
00A11530 D7 36 81 7C 40 97 80 7C C5 9B 80 7C 62 2E 86 7C ?亅@梹|艣€|b.唡
00A11540 74 B9 80 7C 51 9A 80 7C E4 9A 80 7C D1 B9 80 7C t箑|Q殌|錃€|压€|
00A11550 20 25 80 7C D4 A0 80 7C 87 0D 81 7C 54 5D 83 7C %€|誀€|?亅T]億
00A11560 74 0D 83 7C 01 BE 80 7C 11 01 81 7C B6 BD 80 7C t.億線|亅督€|
00A11570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00A11580 00 00 00 00 50 1A BD 77 FF 19 BD 77 BA 18 BD 77 ....P絯絯?絯
00A11590 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00A115A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00A115B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00A115C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
开始地址= 00A11374
结束地址= 00A11590
运行ImportREC,注意:去掉“使用来自磁盘的PE部首”的选项!
选中Ollydbg的loaddll.exe的进程,然后点“选取DLL”,选择jxdata.dll,填入RVA=00001000、大小=0000041B ,点“Get Import”,得到输入表。改OEP=00001000,FixDump
—————————————————————————————————
三、重定位表修复 + PE修正
UPX破坏了重定位表。在第一步我们已经得到重定位表的地址了,用WinHex打开dumped_.dll,复制001F9AD9-002040B0之间的16进制数值,另存为jxjl.bin
运行 看雪 老师写的辅助修复UPX加壳DLL重定位表的工具UPXAngela.exe,打开jxjl.bin,很快的提示pediy.bin文件创建成功!
从dumped_.dll找块空白代码001E2700,够用就行, .pediy.bin中的数据长度为14840。
用WinHex把pediy.bin中的16进制数值全部复制、写入到dumped_.dll的001E2700处.把dumped_.dll的另存为dumped000_.dll
用LordPE修正dumped000_.dll的重定位表RVA=001E2700、大小=00014840,保存之。
再用LordPE修正dumped_.dll的基址为00870000,OK,脱壳完成啦。
PEiD查壳后为Borland C++ DLL Method 2. OD可以正常加载并运行.
--------------------------------------------------------------------------------
【经验总结】
1、在外挂中加载不起。是什么原因?高手有兴趣看看。
2、高手看看这样脱对不对。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年04月10日 下午 01:17:58
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)