申请会员ID:BingFeng【未报到,已注销】
申请标题:申请会员ID:BingFeng1、申 请 I D :BingFeng
2、个人邮箱:402024633@qq.com
3、原创技术文章:
Assembly-CSharp.dll解密
第一部分
在libmono.so的mono_image_open_from_data_with_name
顺藤摸瓜找到 mono_image_open_from_data_with_name_0
http://note.youdao.com/yws/api/group/6831983/noteresource/8143E21F03CC4C63BF8CF5D3FAACCF52/version/88?method=get-resource&shareToken=8D60F3716EF6457CB86CA97FF95B07E4&entryId=53827697
把 mono_image_open_from_data_with_name_0第一条指令,改成无限循环(用winhex)
003DE1F8F0 47 2D E9--> FEFFFFEA
并在IDA中事先下好如上图中一样的断点,
然后运行游戏,用IDA挂在目标,
并按F9运行
之后打开断点列表,
http://note.youdao.com/yws/api/group/6831983/noteresource/9DFDB456FCB04702BF482C6CC48C4E60/version/89?method=get-resource&shareToken=8D60F3716EF6457CB86CA97FF95B07E4&entryId=53827697
双击断点,这样就能快速来到函数 mono_image_open_from_data_with_name_0处
来到 mono_image_open_from_data_with_name_0(003DE1F8 )第二条指令,无限循环处,,
在IDA中修改内存,
把mono_image_open_from_data_with_name_0第一条指令的无限循环 还原回去,
003DE1F8FE FF FF EA -->F0 47 2D E9
之后,反复多次的按F9运行,
mono_image_open_from_data_with_name_0的第一个参数的r0,代表着目标buffer,第二个参数r1代表着buffer的大小
在第一次断点触发暂停后,程序停在了mono_image_open_from_data_with_name_0的第二条指令,跟人r0所指向的内存,如果是MZ开头的,
那么就不用关心本次解密,
如果不是MZ开头的,再按一下F9,程序会在第二个断点处断下,此时解密完成,
用ida脚本dump下来,即可
第二部分
dump下来之后还需要完成修复
http://note.youdao.com/yws/api/group/6831983/noteresource/BB9B55ED0E5A4B28BCBEF87D17ED506C/version/93?method=get-resource&shareToken=B13057D2C21F4FB093619CCF90EC297A&entryId=53827698
其实就是IMAGE_DATA_DIRECTORY MetaData;
中的第一个字段lSignature结构不是'BSJB'造成的
-----------------------------------------------------------
快速定位:
把目标dll拖入LoadPE
http://note.youdao.com/yws/api/group/6831983/noteresource/7BF0A69DB5554753B0714D78D220F328/version/95?method=get-resource&shareToken=B13057D2C21F4FB093619CCF90EC297A&entryId=53827698
记录下MetaData的数值
MetaData 0x001A7558 0x001C752C
0x001A7m
0x001C752C是MetaData结构的大小
点击“区段”记录下pe的区段信息
http://note.youdao.com/yws/api/group/6831983/noteresource/67AEDD4FC30E42669F7AC7138645E455/version/91?method=get-resource&shareToken=B13057D2C21F4FB093619CCF90EC297A&entryId=53827698
.text
00002000
0036CA84
00000200
0036CC00
发现MetaData在内存中的RVA(0x001A7558)落在.text段
根据.text段信息计算,MetaData数据在文件中的偏移:001A7558-00002000+00000200=1A5758
用winhex打开目标dll
来到1A5758偏移处,修改数据为:'BSJB'
如下图
http://note.youdao.com/yws/api/group/6831983/noteresource/855B675D30D548B2844725EE8279BBC9/version/92?method=get-resource&shareToken=B13057D2C21F4FB093619CCF90EC297A&entryId=53827698
保存后,IDA已经识别。
http://note.youdao.com/yws/api/group/6831983/noteresource/2452BF7F0F2740EC9179B551264714E8/version/94?method=get-resource&shareToken=B13057D2C21F4FB093619CCF90EC297A&entryId=53827698
ID:BingFeng
邮箱:402024633@qq.com
申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。
ps:登录后可以把文章整理下发到移动安全区,谢谢。 未报到,已注销。
页:
[1]