首页
社区
课程
招聘
[旧帖] [原创]用Ollydbg手脱UPX加壳的jxjl外挂的jxdata.dll 0.00雪花
发表于: 2007-4-10 13:26 7330

[旧帖] [原创]用Ollydbg手脱UPX加壳的jxjl外挂的jxdata.dll 0.00雪花

2007-4-10 13:26
7330
【文章标题】: 用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期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1019
活跃值: (273)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没记错的话,jxjl主程序好象是hying壳吧?无法呼出挂是因为jxjl主程序的自校验,而且不止一种校验,呵呵
2007-4-10 14:55
0
雪    币: 208
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
楼主辛苦啦!!!
2007-4-10 15:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不是的!jxjl主程序是UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo
2007-4-10 15:09
0
雪    币: 1019
活跃值: (273)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我说的是jx1的jxjl
2007-4-10 21:09
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我也遇到了一个UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo加自校验破的壳用OD或脱壳机脱了壳但是运行不了我不会找API能指点一下么
2007-7-12 02:54
0
游客
登录 | 注册 方可回帖
返回
//