|
|
|
|
|
[求助]关于armadillo三次断点法脱壳的问题
是双进程非标准壳,3.75c版 只是我用相同的方法找到两个OEP,见9楼和13楼 每次dump出来的子进程都一样,现在不知道OEP对不对,这个值会变吗? |
|
[求助]关于armadillo三次断点法脱壳的问题
不是我不想给,只是此程序内部使用,被严格禁止发布 不是技术保密,是有合法合理的原因的 请谅解 是CopyMemII的,debug blocker 大家提供点思路吧 谢谢 |
|
|
|
[求助]关于armadillo三次断点法脱壳的问题
今天继续研究,重新dump时,什么都没改,可是下bp WriteProcessMemory,断下 发现OEP变了 堆栈 0012BB28 00D98B4D /CALL 到 WriteProcessMemory 来自 tzfx.00D98B47 0012BB2C 0000004C |hProcess = 0000004C 0012BB30 0044B000 |Address = 44B000 0012BB34 003A3038 |Buffer = 003A3038 0012BB38 00001000 |BytesToWrite = 1000 (4096.) 0012BB3C 0012BC44 \pBytesWritten = 0012BC44 内存 0012CD60 01 00 00 00 24 05 00 00 ...$.. 0012CD68 F0 02 00 00 01 00 00 80 ?....? 0012CD70 00 00 00 00 00 00 00 00 ........ 0012CD78 D5 B8 44 00 02 00 00 00 崭D.... 0012CD80 00 00 00 00 D5 B8 44 00 ....崭D. 0012CD88 D5 B8 44 00 00 00 00 00 崭D..... OEP变成0044B8D5了。 先继续dump出子进程,OEP改成0044B8D5,用OD加载 0044B8D5 > 56 PUSH ESI 0044B8D6 E8 7561FCFF CALL dumped.00411A50 0044B8DB 8BF0 MOV ESI,EAX 0044B8DD 85F6 TEST ESI,ESI 0044B8DF 74 1E JE SHORT dumped.0044B8FF 0044B8E1 8B06 MOV EAX,DWORD PTR DS:[ESI] 0044B8E3 8BCE MOV ECX,ESI 0044B8E5 FF90 B0000000 CALL DWORD PTR DS:[EAX+B0] 0044B8EB 85C0 TEST EAX,EAX 0044B8ED 74 10 JE SHORT dumped.0044B8FF 如果把OEP改成昨天的0041A197,再加载,就和昨天的一样了,也就是说每次dump出来的子进程都一样。 那OEP到底出什么问题了呢?哪个对啊,还是都不对? 对了,我下bp WaitForDebugEvent断到的不是在dll领空,堆栈里也看不到什么。我每次都是直接下he WaitForDebugEvent,再bp WriteProcessMemory。 请高手指点。急盼,急盼 |
|
[求助]关于armadillo三次断点法脱壳的问题
明天还要上班,不能在线等了。 如果哪位高手知道我在9楼提的问题,就麻烦指教一下吧。 cyto说的那个软件ArmadilloFindProtected.exe我在工具下载板块已找到,查了一下我要脱的软件,是双进程非标准壳,在调试过程也找到版本是3.75c。我现在用的脱壳方法应该没错,可dump出来的程序为什么会挂掉,迷茫了.... |
|
|
|
|
|
[求助]关于armadillo三次断点法脱壳的问题
(请结合13楼问题看) 按csjwaman说的做,我要脱的软件是3.75c非标准壳 命令被拆分的问题已经解决了,原来在OD中取消分析就行了:) 我参考csjwaman的方法,将子进程dump出来,用OD加载 0041A197 <> 55 PUSH EBP 0041A198 8BEC MOV EBP,ESP 0041A19A 6A FF PUSH -1 0041A19C 68 00544500 PUSH dumped.00455400 0041A1A1 68 DCEC4100 PUSH dumped.0041ECDC 0041A1A6 64:A1 00000000 MOV EAX,DWORD PTR FS:[0] 0041A1AC 50 PUSH EAX 0041A1AD 64:8925 00000000 MOV DWORD PTR FS:[0],ESP 0041A1B4 83EC 58 SUB ESP,58 0041A1B7 53 PUSH EBX 0041A1B8 56 PUSH ESI 0041A1B9 57 PUSH EDI 0041A1BA 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP 0041A1BD FF15 58224500 CALL DWORD PTR DS:[452258] 0041A1C3 33D2 XOR EDX,EDX 0041A1C5 8AD4 MOV DL,AH 0041A1C7 8915 6C61D700 MOV DWORD PTR DS:[D7616C],EDX 用F7应该很快找到IAT,可是我在第一个call处F7就挂了,就是0041A1BD处的,错误提示“不知道如何继续进行,因为内存地址0142e626处是不宜读取的。请尝试更改EIP或者跳过异常执行程序。”。然后调试窗口中一片空白。 ds:[00452258]=0142e626 我不知道问题出在哪,请指教,急盼中 感谢了先 |
|
|
|
[求助]关于armadillo三次断点法脱壳的问题
刚才试了一下 wangshq397的方法,不行啊。我说的命令被拆分是用OD加载程序就这样,不是在执行期发生的,加载时自动分析过了,ctrl+A问题依然。还请大家帮忙想想办法。 还有就是怎么找IAT还是没搞懂,大侠救命。 我参考的是精华7里csjwaman的文章“arm3.60双进程” |
|
[求助]关于armadillo三次断点法脱壳的问题
感谢两位,我一会儿回去试试。 不过虽然命令被拆分了,不过还能执行,所以数着字节还是把子进程dump出来了,用OD加载之,傻了,怎么找IAT啊,运行到第一个CALL就挂了,没能像参考文章中说的那样跟踪几步就找到。 不知什么原因,还要请教高手了。 |
|
[求助]关于armadillo三次断点法脱壳的问题
今天求别人把精华7全部下来了,看到其中csjwaman的文章“arm3.60双进程”,里面讲到我出现的问题原来是因为采用的非标准壳。那就按非标准的方法试试吧,又有问题了,不好意思:) 下bp WaitForDebugEvent 程序断到了这 00DADB0F 23 DB 23 ; CHAR '#' 00DADB10 82 DB 82 00DADB11 61 DB 61 ; CHAR 'a' 00DADB12 52 DB 52 ; CHAR 'R' 00DADB13 CE DB CE 00DADB14 3B DB 3B ; CHAR ';' 00DADB15 32 DB 32 ; CHAR '2' 00DADB16 53 DB 53 ; CHAR 'S' 00DADB17 C5 DB C5 00DADB18 AB DB AB 00DADB19 60 DB 60 ; CHAR '`' 00DADB1A 1E DB 1E 00DADB1B B6 DB B6 00DADB1C > 3370 74 XOR ESI,DWORD PTR DS:[EAX+74] 00DADB1F ? 1F POP DS ; 修正的段位寄存器 00DADB20 . 81B9 E42DFD67>CMP DWORD PTR DS:[ECX+67FD2DE4],BB3B6DF3 00DADB2A 17 DB 17 00DADB2B C6 DB C6 00DADB2C 7C DB 7C ; CHAR '|' 00DADB2D BB DB BB 好像是反汇编时的问题,不敢确定。命令已经被拆分成单字节的DB xx了,郁闷。 重新载入,直接下he WaitForDebugEvent,这回断到了,堆栈 0012BC88 00D94BF4 /CALL 到 WaitForDebugEvent 0012BC8C 0012CD60 |pDebugEvent = 0012CD60 //转存中跟随 0012BC90 000003E8 \Timeout = 1000. ms 取消断点,再下bp WriteProcessMemory,F9断到,堆栈 0012BB28 00D98B4D /CALL 到 WriteProcessMemory 0012BB2C 0000004C |hProcess = 0000004C 0012BB30 0041A000 |Address = 41A000 0012BB34 003A33C8 |Buffer = 003A33C8 0012BB38 00001000 |BytesToWrite = 1000 (4096.) 0012BB3C 0012BC44 \pBytesWritten = 0012BC44 内存数据 0012CD60 01 00 00 00 B8 06 00 00 ...?.. 0012CD68 BC 06 00 00 01 00 00 80 ?....€ 0012CD70 00 00 00 00 00 00 00 00 ........ 0012CD78 97 A1 41 00 02 00 00 00 ?A.... 0012CD80 00 00 00 00 97 A1 41 00 ....?A. 0012CD88 97 A1 41 00 00 00 00 00 ?A..... 请问到底41A000是OEP还是内存中的41A197是OEP? 还有,ALT+F9后返回到下面 00D98B4D 85 DB 85 00D98B4E C0 DB C0 00D98B4F 75 DB 75 ; CHAR 'u' 00D98B50 4B DB 4B ; CHAR 'K' 00D98B51 50 DB 50 ; CHAR 'P' 00D98B52 F7 DB F7 00D98B53 D0 DB D0 00D98B54 0F DB 0F 00D98B55 C8 DB C8 00D98B56 58 DB 58 ; CHAR 'X' 而实际上这里应该是 85c0 test eax,eax 75 4b jnz short xxxxxxxx 50 push eax f7d0 not eax 0fc8 bswap eax 58 pop eax 很明显命令又被拆分了,而且全部都这样,郁闷,不知道该怎样处理这种问题了。 请大虾赐教。 还有armadillo对SoftIce的检测怎样躲过去呢? |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值