manual unpacking + by re.m j nop790

105
http://reversengineering.wordpress.com ١ Manual Unpacking + TRASLATOR AND AUTHOR: و : JNOP790 RE.M

Upload: guest747ad9d

Post on 20-May-2015

1.923 views

Category:

Technology


43 download

TRANSCRIPT

Page 1: Manual  Unpacking + By Re.M J Nop790

http://reversengineering.wordpress.com

١

Manual Unpacking +

TRASLATOR AND AUTHOR:

� و ������� �:

JNOP790 RE.M

Page 2: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢

69 6E 20 74 68 65 20 6E 61 6D 65 20 6F 66 20 67 6F 64

JNOP790

RE.M

25 JULY 2008

١٣٨٧ ��داد �

PRESENTSPRESENTSPRESENTSPRESENTS:

Manual Unpacking +

http://reversengineering.wordpress.com/

©�����-���������-�����������

Page 3: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣

MANUAL UNPACKING � MANUAL UNPACKING � MANUAL UNPACKING � MANUAL UNPACKING � +� � � � (PLUSPLUSPLUSPLUS)

-Mup upx Mup upx Mup upx Mup upx 0.89.60.89.60.89.60.89.6 ---- 1.021.021.021.02 1.051.051.051.05 ---- 1.241.241.241.24 ----(((( 1111

-Mup UPX Mup UPX Mup UPX Mup UPX ----(((( 2222

-Mup upx Mup upx Mup upx Mup upx 0.89.60.89.60.89.60.89.6 ---- 1.021.021.021.02 1.051.051.051.05 ---- 1.241.241.241.24 ---- (((( 3333

-Mup upx Mup upx Mup upx Mup upx 0.89.60.89.60.89.60.89.6 ---- 1.021.021.021.02 1.051.051.051.05 ---- 1.241.241.241.24 ----(((( 4444

-Mup upx Mup upx Mup upx Mup upx $$$$hit hit hit hit 0.0.10.0.10.0.10.0.1

-Mup ASPack vMup ASPack vMup ASPack vMup ASPack v2222 12121212

-Mup ASPack vMup ASPack vMup ASPack vMup ASPack v1111 08080808 04040404

-Inline Patching ASPacked progInline Patching ASPacked progInline Patching ASPacked progInline Patching ASPacked prog.

-Mup FSG Mup FSG Mup FSG Mup FSG 1.01.01.01.0

-Mup Neolite Mup Neolite Mup Neolite Mup Neolite 2.02.02.02.0

-Mup neolite Mup neolite Mup neolite Mup neolite 2.02.02.02.0 ----(((( 2222

- '''' ////Mup YodaMup YodaMup YodaMup Yoda s cryptor s cryptor s cryptor s cryptor 1111....xxxx modifiedmodifiedmodifiedmodified

-+ PATCHING TASK MANAGERPATCHING TASK MANAGERPATCHING TASK MANAGERPATCHING TASK MANAGER

-+ Introduction in delphiIntroduction in delphiIntroduction in delphiIntroduction in delphi

-+ HOW TO WRITE A LOADERHOW TO WRITE A LOADERHOW TO WRITE A LOADERHOW TO WRITE A LOADER

-mup telock mup telock mup telock mup telock 0.980.980.980.98

-Mup All vMup All vMup All vMup All verererer. . . . Of Nspack Of Nspack Of Nspack Of Nspack 2222....x x x x ---- 3333....xxxx

-MUP SPlayer MUP SPlayer MUP SPlayer MUP SPlayer 0.080.080.080.08

-MUP DLL ARMADILLO MUP DLL ARMADILLO MUP DLL ARMADILLO MUP DLL ARMADILLO 2.512.512.512.51----3333....XXXXXXXX

-Mup AntiCrack Protector vMup AntiCrack Protector vMup AntiCrack Protector vMup AntiCrack Protector v1.411.411.411.41

-MUP WITH SCRIPTAsprotect MUP WITH SCRIPTAsprotect MUP WITH SCRIPTAsprotect MUP WITH SCRIPTAsprotect 2222 Ske Ske Ske Ske

-MUP ASPR MUP ASPR MUP ASPR MUP ASPR 1.31.31.31.3XXXX

-+ Bypassing ActiveMark TryMedia vBypassing ActiveMark TryMedia vBypassing ActiveMark TryMedia vBypassing ActiveMark TryMedia v5555 Debug Check Debug Check Debug Check Debug Check

-ICE License Overview Cracking Tomahawk Gold ICE License Overview Cracking Tomahawk Gold ICE License Overview Cracking Tomahawk Gold ICE License Overview Cracking Tomahawk Gold 3.03.03.03.0

-+ Anti TZ Copy ProtectionAnti TZ Copy ProtectionAnti TZ Copy ProtectionAnti TZ Copy Protection

- ((((MUP PEtite MUP PEtite MUP PEtite MUP PEtite 2222....x x x x (englishenglishenglishenglish)

Page 4: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤

ر-������

� ا��� د���� تدرا�� ���� � رد �#��وف '&�� ه��$ �#� "� !� � ���� در � رد ���

� �1ر /� �� د��� ��0 وه�� /�� .-� �-� ��ا ���ز$ +��*( �/�ر�� +�ار �20د !� ه� /� � . '� "� و ��ه� /$ دو/�ر� اون ا"� /PE �28ه�$ �56�7 �� �4�3

�! ;�� او�=�>�ا�! > � �� 2��ت رو ز��د �2&� !� "�� او��A�� ه� 1 ?�2. �@�#/ ;1; /�B دم از ه*; 1*�� �2و�� (ه� رو �*2و�� .2; E ( �"�/ ;�"ا...د�-; ��2ز$ /; .2?$ � ���و

ن +6�6&� �2م !� /�ا! ن � ال 'H2 /��2د و /�7 اه�2 /�; اون �� ال !?I� ;/ �&� ه��� ه��� ر$� اب /�� K ��ا� �2� ;�" ....; را� �80 /�"; و LE+2( ا�=�د 1; ه�( 1; �� �

'&� .2�(؟-

د"� و�2-�د� /� ��١٩٨٩/�; او��2 '&� /; ��ل E �2 و���وس���2 /; ز���� �1; اوS*ه �/PKLite 2&�د� )T4�� ر �2��� 3��U داس '&� ه���� /�� .... �AV �/ ;�"W0 ل�� در .

���� ر+�/�( /��2 ا���A /��8�2 و /��8�2 ه� روز /�� ;" 1د�� com/exe ��4( ه�$'2�8" ;4�Bا.

ب �1رش �84د� �1دن ه�( 1; �� '&� �4�3 رو �2-�2د و او� �3�Y /�����; ز��X �8�4د� E [�2&�اش �2&; و ه-���� �1; /�����; را ا���ا �2&�2� +��*( و �1 ��7[ \� �1; ��1ر ا�

�� ��; و ����_ /��; داد� ه��� را دا��T4�^ 3��E; /���ر �2&��;/������; را /��; ��AU� دارد ا����ا "��� و OEP ه*� ن !!!!! ا��� �� �; ��1ر ه�� �1�� ��2�( �1; /��( اوردن ."�وع /����; ��2ود

(original entry point). /����; ا���cد� �82 ا�� ا��وز� در ا\3 �1رش B b��1 ^=�/��82 و +�L /�ا$ �1 �1دن

.�1دن "� c0 ;82� ;1( '�و!&� ر "� !� �� '&� 1���2 و /#�� ����اغ ���3*�/��; را^���� د���_ ������1; /���� ���� ... �*8��2; �-��� ا�&��; اول او��� ا�

د��� �� /� /����; ه�$ �7[ ص ا�� �1ر را ��1د ���ًا رو $ �B د���� گ ه�� ��1ر ��1دن و B ��^ و 2 . ه� روش W0ا"�� traceاو� ه� 1 �1دن !� /; �4�3 ا\�6 د�( '2ا �&

ض ��1دن و ��Eاب ��1دن از د�-�� ا+�ا��ت /#�@� '&�� ه�� و ��� '� �U ره�� importو!&�table )�2] �8&3 ��ز ه&� .ه�( 1; در ه-�م ا�

�ن �8&3 ا���� ا�� /����; ه� ه*�ن S*ه�ا�� هم ا��ا$ 1�- د" ن ه�( 1; هE �&� ا� اi6j /����; ه�$ !/����; '� "� /; �1ر ��2و� و /����; ا\�6 را در ^�T4; /�ر �2&

&� �� �1 �' 3��4 �� �� د" ن در ا���A$ �&�8 ه�$ �#*E ا /; ��م�8 �pe �&' LY� د ا�=�د �2&� و در /#@� � ا+k !#اد �&8�A /; �&�8 ه�$ '&� ��ود �82

�A و+��upx#�وف ! د�� rsrc. و upx0,upx1 �&�٣�8 /����; را '� �2&82 د�.

� رو���� aspack���� '��� �#���وف /��; ����م ���� Alexey ا���� /������; ه���( ��1; �

Solodovnikov "��2�. ��! ;�����/ ��=^ Hا���� ا��� '&�� در ��1ه !٧٠ ��62E و در\�2 �� و ا�& ن ه� را در ا��E �4��3 �8�4د� � �. ر 1������k ه�(،ا�� '&� �� د$ 1*

ر ���� و �� �; و�2&� '�2ا �!�22I "� +�ار �2هادرس "��وع /�����; /�; اول ا��� د$ 1* ر /�� ����; از "�وع ا\�6 ������2 �82 د و ه-�م "��وع /�����; /#� از ا���ا$ د$ 1*Eذ

از �&�8 ه�$ ) .OEP(^��( �84د�0 در ا�� و ��_ /; �� ; "�وع ا\�6 /����; �2��د

Page 5: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥

4; �8�2 د ��Bوف ا�� /����; 1; /; �&�8 ه��$ /�����; ا�#�.ADATA , .UDATA & .ASPACK ارد import ر��? دار �2&� �1; ^��� �4��3 ا��ا��� را �2��"� در /��8�2 ��

tables � �/�� 3 ا��ا و /�ز/�+ Xاز دا� #/ �ه�$ ه� دارد 1; ��6 $ د����گ رو �api"; و ./-�2د

ه���( ��1; ا�&�����ت د�-���$ ه��� دارد �3��Y ا4���B; ���1دن �٢s١٢��� !����� ورژن ا���� /������;

time trial & nag, stolen bytesد ا"�ر� �1د.... و 82�. ا�� ا�4اد 1; /; � "�� ا�� 0 �; ��م ا�4?ار ه�� رو ��2ور�� ادم ه��$ (���i ا�=�� ا�� �&�;

��&2� ���&4 ����A/ ;��*از ه �� و ���2Eل �2&��"�����LY ا���0 در ����� راه*���$ ا���� ..���Uد$ �22�2/����; �-�ه� /� ا�از��2� �;�" � ;1 :

"IMPORTANT! - ASPack'ed files cannot be decompressed. Do NOT turn off

the "Create backup copy (bak-file)" option if you do not have an

original uncompressed copy on hand elsewhere. " "�ًc � ;�����/ ���ا ��" /� \ا$ /6 /; ���8$ دروغ �- �2 و /H2 از ا�� و+�� ن را /� �

2 ."ه� !56 �&

د/ �. !ا�� �� LE\; /��2ر 1

Mup Mup Mup Mup upx upx upx upx 0.89.60.89.60.89.60.89.6 ---- 1.021.021.021.02 1.051.051.051.05 ---- 1.241.241.241.24 ���������*�*�*�*����****

;���

UPX )�26/�+ ��/ رس و در �8�4دU��� �0( /��� ه�� در �8�4د� ��1دن وه�� از و �&� از '&� ه�$ او'� � ا����اوردن و ! �2S*ل از ��4(ه� �� ان ��Yل . ( �را دارا PE �4�3 ه�$ در '� �1دن .U ;/ �/

u2� :/�2ور� /����; را از ^��( �84د�0 در ��2 ا��2ز�/; �1ر /�دن �Upx -d yourfile.exe

ا��وز� �ل ه�$ ��c6�7 از ا�� '&� 1; ! �v د�-�ان !�22I داد� "� ا� د�� �82 � �1; از �*�6; �?��( ��; ه�$ ز��� /�ا$ ا����ز$ �� ع ، رو"�A$ �56�7 ا�&��ه�$ ا��A +�/26( ه�$ �84د� �' �2S*و ه )

ه�$ ا��� '&�� .'&� ��2 ان ا"�ر� ��1د ��� � Markus Oberhumer & Laszlo Molnar �"��2� :و از ا�� ادرس +�/3 /�ر 0?ار$ ه�(.�2��" 11.25W; ا�E�� ورژن ان

http://upx.sourceforge.net

)��^١

�����: �///ا/?اره�///� <///هف///���; �� ، � �OEP�i '��; /�ا$ '2ا �1دن/// �رروش 1///و��ا�H �0 و �����///�

Dumping & rebIT

Page 6: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦

UNPACKme.UPX:هف

١٠ از ١: در�; ���7

82�Aد (lordpeو ollydbg, ollydump plug in: ا/?ار ا�ت'(

Peدا�H در/�ر� : ��2ز

�� � � : Zephyrous

jnop790 : و��ا�H ����� و

;���:

اE ;1 ����م 1*� دا�H در/�ر� ����Eر '82�Aد �2&� �� pe "�/ ;�"دا...LY�: Ep (entry point), oep (original entry point in packed pe)

2� 82�Aد �2&� ا�� � "�; را /7':

'Peering Inside the PE: A Tour of the Win32 Portable Executable File Format' by Matt Pietrek

� ب در ا�� را/ ; ارا�; �2ه�در ا�E ;*��! �� ��د?� )."�/ $�*U و اه .)اE �0ا /7

:روش

�4���3 ��� ن ��1; eXe.upx.UNPACK) bytes776, 11 ( ر��� E�0 ا����را در د������0 ا����ا �2&���2 ،د�

ep ��' 3���4 در olly^��� ☺☺☺☺ه 1; �4�3 '� ه��( ، !� ��A /�; ا��� ^���4 �ا"��; و ادا��; ��2ه�2 �2����2� �".

Ep ن /����; ا��اد " ) .2? رو";؟ه*;(�82 د ا4�( ���� ه�( 1; 1 ان در�( /# از �

.�� ) pe editor 3�Y�lordpe )yoda /�ا$ ا�&; ه*; .2? رو"� /��A/ ;8 ه�( /����; را /� ��� �2 )"&3 ز��( .1

Page 7: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧

: � �OEP ، Dumping & rebIT�i '��; /�ا$ '2ا �1دن

���- /����; از ^��( 1; /#ا از ا�&; /����; '� �� �84د� " 1 ا\�6 /����; !� ه . �84د� �0 در /�2� در د���س �2�(

3&8�MUP ا �1دن�1دن د��� '2 �� :� �L&8ت ه�( OEP / ;1 �� ه* ن ا� Anti-debugging, anti-tracing, encryption, etc �20 (در�ه.

ش "���E �62E ��2 ;1 �UPX اردرا � �A !هu2 1ام از ا�"*� ��2 ا�EP (RVA :408160) 2در !�� 22� OEP در 1*� '���2 !� !&; ا$ از 1 د$ 1*��س را /

7 اه2 !/ �*" ;& ط /; د$ 1*��س را !=?�; 12 رو!�2را '2ا 12،�-� ا�/�� �. UPX ��62Eرا '�2ا 1��2 ا��� ��1ر /��ا$ ��K ;�/OEPف '����2 ^��1( �2&��2 !�� ! ��ار�� ورو+( ا�� �1ر �; �� �Ac2*�2 1=� /�� !را^( ه�( -. 2���!*��� و ��#� : � اب ��د� ا�( ../-Wار�� BPا�� "*� �2

!و zU�/ � E 3��1 "ن �82;12 ا�E�� ا���A ه*8�2; ا��E ��1ر را ���8ن POPAD ...LOADAD....PUSHADه*82; /; ;� ه� !

.�2ه

004082AF.-E9 0C90FFFF JMP crackme_.004012C0; 4012C0 is offset

of the OEP.

1BP �2در ا�� ا4�( �� اه�2 در رو!�2 د$ 1*��س ���=E �*� �� ن F9'_ .را از �1ر ���2از�� . 261 ��PLAY �2�?2� را.

72 اه�2 � ��OLLY زدن �/ _' ����/ �= دش ادا��; /ه� !�� /�; F8ا��E ه�2 !�� /&��رادا�; ��2OEP ��/.

004012C0 55 PUSH EBP; you will stop here, 12C0 is the OEP

004012C1 8BEC MOV EBP, ESP

004012C3 6A FF PUSH -1

004012C5 68 F8404000 PUSH crackme_.004040F8 004012CA 68 F41D4000 PUSH crackme_.00401DF4

DUMP �2^�� �� /����; را &2�.

Page 8: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨

3�*U ��! ;�"�/ ��( �����ل �2-�?ار��ب ه*; .2? را /�; ^� EDUMP د ا��� /��ا$ !���3 .../�ا^��� ا�=��م "� ب /�� / E س �1ر ا�2"ن /; �� �#&�� IAT ��ز��رت د���� /� د در .. را /; \�/ �+��/ $��*U ��0�1; ا

اه� �1دE ;2A! را �� .ا�� ز�2; ه� � �� "��ن �*�2د /� E �62E �" �� !!!!�� ^��� // HA��LORDPEا�0 از ���? /����; ا�

Page 9: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩

Mup Mup Mup Mup UPX UPX UPX UPX ��������****����****

� ���٢ )��A4: �///ا/?اره�///� <///هف�� �///�0 H�روش �1ر/// و !��*; و��ا

Cyt0m!c?s crack me #1 :هف

٢/١٠: در�; ���7

OLLYDBG , OLLY DUMP: ا/?ار ه�

;�" � :Ricardo Narvaja �2�� و��� /; ا�-26�� MR _GREEK /; ا�

JNOP790: و��ا�H �0 !��*; و

Page 10: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٠

:روش

.... ٢s١١ارد �LY ورژن /�گ و� د د OLLY DUMPاول از ه*; /-� 1; در /#@� از ورژن ه�$ �A�{ !��� ورژن ��٢s(٢١�ه .

ب /����; را در EOLLY 1; �� ; "�وع ا�� /����; در �2� . ه�(EP=4428A0 ا��ا �2&�2 و �2

OEP. /; او��2 �&�8 و+�� ��2ود L��1 ;����/ ;1 ا��� "� /�" و ا�� �#� ��UPX �2و��2 1; �2 ا���2 !*�م �&�8 ه� را �� $ 2VIEW <MEMORY �2 در ��/ )ALT+M.(

�2 ا�2� �� �=2�2ا�� ط /�; ٠٠٠٠٠{ 1; در � //�� ;1 �8&� PE HEADER ��! د دارد و ه��( و�� .ادا�; دارد 401000ه���2 1; در دو��2 �&�8 ه�(، ا�� /; ا�� �#� ه�( 1; و+�� /����; از �&4428A0 �8^�� �� در

1DUMP �2 ا��ا �را '2ا �2&�2 و ��2 ا�OEP 2اول �2��د �� دوم /; �&�8 .

^��1( ��1د� و /��ا$ '�2ا EP /; ا���� /; �*( '����2 � ��2 ا�2'�ش /; او��2 �&�8/�ا$ '2ا �1دن ا�� 42D000 و ٠١٠٠٠{��Uد$ /�����1OEP �2دن ا���� '���ش 1*��� �-���� /��; ��1ه� 1���2 و /��; ه*���2 را^����

.ه�( ب �� /� ارا�� د�E ل ا�� '�ش 1; /; �&��� 1*�� از��42D000 ��2-�د� . ا"�ر� �2&

/; �? ا�� '�ش JMP 4251d0 . ه*; '�ش ه� /; �� �&�8 ا"�ر� �2&

و در�( /# از ان ا�� '�ش و� د دارد و ... دوم �2-�د�� POPADا�� �� را� د�-; د���ل د�� را�#*3 2��OEP �2ار ESIر ر�2��� /-?ار�� د POPAD ��BPا�0 در ا�� � .را ��2 ا��2 /

Page 11: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١١

ب /� �� EBP ) زدنF2 ( زدن _� ���2��4429EF �2 �� در F9در ا�� '�ش و �

اهOEP )4�� �2/; دا3E 1 رF7 ، ;�4 و /� زدن E را ).OEP=4251D0(

DUMP �2^�� /����; را &2�.

" �� .و ا�� /����; �2? /�ا^�� ا�

Mup Mup Mup Mup upupupupx x x x 0.89.60.89.60.89.60.89.6 ---- 1.021.021.021.02 1.051.051.051.05 ---- 1.241.241.241.24 ���������*�*�*�*����****

)��A4: �///ا/?اره�///� <///هف�� �/// �0 H�روش �1ر/// و !��*;و��ا

ه� /����; ا$: هف

! �� دا��� و �� �1 ه*( و �~و�� �4�3 ا���2?ور و �� د��� �0: ا/?ار

��� �: Detten

H�و و��ا ;*��! : JNOP790

Page 12: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٢

;���:

د /����; �1ر د$ 1*��س را ا�=�م �2ه�2 اول /� اE د� از�c��. ا�&��ر را ا�=��م UPX و ���_ ا����7ب UNPACK و ا����7ب 0?��; Procdumpدوم ��2 ا��2 /� /�����;

/����; ه��� "�2; /; ا�� و �� /#@� ا��&� ه��� 1; ! ا���� ا��� �1دن .��� '&�� را دار�� ���2 ان . ده�2 !داد ا�� ا��A هu2 1ام /; �#� ا��� د��� �2�(ا�� �1 ر را ا�=�م

:روش

2����2������A �ا�����0 ������ /��������; ا$ را /����� ������ �4�����3 ا�������2?ور ����� رد /������� +�����ار ده����2� �2! ;����1 } k/�����! ��GetProcAddress �2د���� �8��2 د در /���2 ا�importable ���AدرS*( ه��2ر � ���ح ه�����/ k/���! ����

Loadlibrary �� Getmodulehandle ه� �2 ا� ا�� �1ر ا�=�م ده�☺☺☺☺ /; ا�� \ رت sice �� ollydbg در W0 �/ ��bpا"�� �� �� ; "&�( ��

bpx GetProcAdress :در ��4( ا�_

در رو$ !�/f2 k /� زدن : ollyدر

��ل .� ه���2 ؟: � ال �/ �� .��2ود '2ا 1oep �2/; �� ��2ز دار�� !� �� ; ا$ از 1 را 1; /����; ا��� "� و ز���2&; � در

را /�2/�2 ؟ oep ا�� �. ر �� ��2 ا�2:� ال

ب /��; /; ورژن و � ع '&� دارد E . ود�����40 �72 اه�2 ادر�� در �xxxx �2/��2/ ا��� '��ش /�; . راoep LY� ��2-/ رت \ �c6�7� $�A"رو �/ ;� �2�call eax ،ret �� �� jmp.

�2 ب /�2 �2 '2اش 1E2 . /����; '� "� را ا��ا 1

:/; ا�=� �bp �2��2ا�0 از ��4( ا�_ ا���cد� �2&�2 /# از �( �1دن ان

Page 13: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٣

004209C9

:004209CB

:004209CC

:004209CE

:004209D0

:004209D2

:004209D3

:004209D4

:004209D5

:004209D6

:004209D7

:004209DD

:004209DF

:004209E1

:004209E3

:004209E6

:004209E8

:004209EE

:004209EF

8A07

47

08C0

74DC

89F9

57

48

F2

AE

55

FF96640A0200

09C0

7407

8903

83C304

EBE1

FF96680A0200

61

E90B65FEFF

mov al, byte ptr [edi]

inc ed

or al, al

je 004209AC

mov ecx, edi

push edi

dec eax

repnz

scasb

push ebp

call dword ptr [esi+00020A64]

or eax, eax

je 004209E8

mov dword ptr [ebx], eax

add ebx, 00000004

jmp 004209C9

call dword ptr [esi+00020A68]

popad

jmp 00406EFF

This is the

unpacking

routine...

=> We land

here!

=>When the

entire

program is

unpacked

we take this

jump.

restore Registers

=> Jump to OEP

�2 ا�2 a و ��_ !��g 4209e8 X ر�2� 4209ef X��! �/ /; ;و+�� 1� ��^opcode �T� رد ���! �� �=X �2را !�22I داد� و در ا�&2� jmp eip دو/�ر _� !) )�; ��1 ( را �enter �2�?2و �

را زد� و /�����; f5 ����; در ا�E�� !&�ار ه�( و �A*����� +��*( و ��� /�����; ا���� "�� !��ز� ^�� /procdump �2 .را ا��ا �2&

;� رد ��T ��ن در �2�( '�2ا ��1د� و رو$ ان ��621 را��( ��1د� و 0?�� ;����/full dump را ا����7ب�2&2�...�2 .و�� /����; را ا��ا �*� 1 .�ا؟ ن .oep ز ا�� ز���د �زم ��2�( .� ن ا�ن .� در epه�( �#� ه*�ن upx در �&� از �&�8 ه�$ ه

ب 406eff/����; ا��� "� ه�( و !�A /�� ا��ا در /����; ا\�22I! �6 ده�2 .� ن ��� ا���ا ����4; ا��� �E ;����/ ��pe editor را /�ز �1د� �� /� ه*�نprocdump �2ه�22 را �2I! ��ا

OEP - Image Base = 406EFF - 400000 = 6EFF

�2^�� /����; را ذ��2E �1د� و ا��ا ا��ا &2�.

.../����; �1ر �2&

1; ��2 ا�2 �� ...... ا�=�م /�ا�� ه ز �62E �1ر �

Optimizing PE header

Removing the UPX related sections

Page 14: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٤

Mup Mup Mup Mup upx upx upx upx 0.89.60.89.60.89.60.89.6 ---- 1.021.021.021.02 1.051.051.051.05 ---- 1.241.241.241.24 ���������*�*�*�*����****

)��^}

)��A4 ;���///��� �/// �0 H�ف///ا/?اره�///در�; ���7 ////!��*; و و��اروش///ه

... .� ه�( UPXد�-; 4&� 1� از �� ه� /��A /ا�2 1; ا�� :���;

��� � :G3NUIN3

H�و و��ا ;*��! : JNOP790

82 د و : در�; ���7 � ;�c0 ر��E�� ;/ k��82 $ را�/ i�� � �A!� .;ا� /�2; اش ه*

PEID, OLLYDBG ,IMPREC, OLLYDUMP :ا/?ار ا�ت

GAMEMON.DES :هف

:روش

2*Ac/ ;& �� /����; /� .� '� "� /��A�� را� ^H6 .� �1دن ان /����; ه��$ �د�-; /�� /ا�2 /�ا$ ا��� �5�6�7 را دار�� ا�� /����; ه� 1; /��� ا�@� ه�$ /����; ه�� ...!�278 ده� ا�� �1ر ه�( 1 ��' $

ن 3��1 �2�( و /�A(/; را^�� !�278 �2ه 1; /����; /� .; '� "� ا�( "�A&��/ �Aه*; ا� ;�� از �ا��221�� از ا��A ا���cد� 12 �� /��� ا��A را ا'�( 1�!(..

�2 ن را .� �2&� �T� رد ب /����; �E �/PEID� -2� ;1 �2�2�Upx =�2� ا�� �� ا���72 اه�2 /� � ;1upx ��� ا���ا IATاi6j ا��A ..و اi6j '&� ه� و '�و!&� ره� .2&�ر �2&را 1*��س و �84د� �2&

� و /��ا$ ا��� ��2 &2� H��� E 3�/�+ ��2j ��� � ا���ا ��8&3 !� ?/; \ رت �2j �����2 در ��2ور�� �#&2� Eم �1; + بن ��2 ن ه*��2 /�����; را ��8��A/ ���A/ �A4 $( و .�; /�ا�ه� ;�� ��3 و /#� از '�� "�ن .-

...!�22Iا!� در ان د�� �82 د

Page 15: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٥

�A! ;1 �2� ب �2Eا$ ٣�/ �A !� !�/k ورود$ از از 3��1 وارد "� ا�( ا�� �� �2و��2 1; /�� /��82 از ا� �� /����; از ��/ 3��1 k/�! دا"�; /�"�2

Page 16: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٦

ب /; /����; ا��� "� ا�0 �-�ه� /��از�E�22� ).k/�! �62E ;1 )IMPORTS ه�( � �2

22� ر /�"2��� �72 اه�2 /; ه*�c!..2Sوت /; ا�� /?ر�0 را �2�\ _' �2��/ $?2. ;6*^!!!!!!!

رو"�c6�7� $�A ه�( ( �2-?ار��loadlibrayA در ه* ن Bp /�ز �2&�2 و �� OLLY/����; را در 3Y�f2 ��K و �� از �T� رد � k/�! $زدن رو �command line ���4ن vE �� �2هر را �2 : ا�� د��

Bp LoadLibraryA

�1 �*"� 8/ �22 1; �1رش �� � ر ه�(�4 ه�( �&��ر /� ا�� '&� ا"�2� . ب ^�� /�ا$ ادا�; �1ر دو/�ر� EF9 2� 2?را �2?��2 و /; �*( ا��*Ac/ �! ���2� 1 �1دن ��=��� ا�E ;.

CALL to LoadLibraryA from Gamemon.0046BD0E

�ا� ���ق دا�)' �#��ای! *()' را �%$ �#ی� ای! �د , #-

Page 17: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٧

ب ا�� .� ه�( /-?ار�E����/ ���/ H... زدن �/Ctrl + G,X��! 46 وBD0E �2�� را �2 را �ENTER �2�?2و

رت د�-� \ ;/ ��

�= ��2��2 ا�

Page 18: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٨

ب �� ا�=� /; !&; ا$ از E 1ENCRIPTION��2ر�

ب /�ز ��E ن ب /-?ار� /��� /����...ه�( OEP'��2 از A4 �=1*2�� ا�� '�ش ا�E$ ه*EH �! 2� 1=� ��2ود�/

�2 ب /�ا$ ا�&; � *�� /�28 1; ا�� ه* ن �� ; "�وع ا\�6 ه�( ا�� �1ر را �2&E

.را ا���7ب �2&ORIGIN HERE �2 ا$ 1; '�ش ا�=�م "� و ;�261 را�( �1د� در ��

� :ا�� �� !=�/; د�-; ه� ه�( 1; �2-; /��82 /����; /; ا�� \ رت "�وع �82

Push EBP

MOV EBP, ESP

PUSH -1

ب ا��� .�2? ه�� ه*2� ;82� PUSH -1ا�� ا�� �E ��� �56�7 �4ق �2&� ;����/ $�A��/6&; /�ا$ ز/ ) �ن ����!� در � رد ��4( ه�$ E از �4�3 ه�$ رو /��PE ��2ور/ )�/...

3� .�DUMP ���2-2د�-; /�2; .2? ه� !&�ار$ ه�( و �3Y د#4; +;���� ب �E:

OEP = EP – base ارد IMAGE BASEدر� رد '2ا �1دن �� i�6jا��� در ا 2ه� ا�0 /; /�� �� �-�ه� /از� '2اش �2&

ه�( 400000_':

OEP = 0043BE47 – 00400000= 3BE47

�� ه*�K�E ;/ ;82 /�2ور� /��A ه��( در ه-��م ا�� -1; �2 �!�&�DUMP )*��+ ��1دنREBUILD IMPORT �( ا���7ب در /�2ور�را از ^�( /��ه ��A/ و IMPREC 2ا�� �1ر را ا�=�م ده.

Page 19: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٩

��c0 �� ن!! از2 د دا�2!!! از "*� �8E... IMPREC �2در ��^6; �1ر /� &3 �2*U ��رت ز :ه� /; \

)3BE47 (ا را وارد �2&�2 �; ادرس ا�� Oep( ا4� -١٢- ITA AUTO SEARCH را زد� ٣- ��2-/ )2�4 ا�2وارم '�I2م �}- GET IMPORT �2�?2� را � FIX DUMP/# ه� -

Mup Mup Mup Mup upxupxupxupx $ $ $ $hit hit hit hit 0.0.10.0.10.0.10.0.1

a pattern in upx type packers is there will be something like jmp <register>

�� 1; در '&� ه�$ �ل ا-�upx ;/ ;2� ه�( '_ �1ر <jmp <register و� د دارد �� .2?$ " اه / دE رت .�� /; ا�� \

�� ا� دار�� LY�upx shit در 004095FD FFE0 JMP EAX

�2��2� �= پ /; ا�� �� 3Eدر دا #/ 004095E1 FFE0 JMP EAX

اه�2 ر�2 2�f8-?ار�� و /� زدن bp 1; در ه� دو �� �� E �= /; ا�004095E1 xxxxx xxxxxxxxxx

;2�" ;Sه�2 !� /; ا�ادا�; �2 #/ upx ;82*ه z� #/ �2��/ )�ه �� *#� _'

2�2 �� رو$ ان 4095FD در jmp eaxا/�ا �� �� / �� bp _� را �W0f9 �2�?2ا"�; و � ا�=�م داد� !� 1 ه� /; right click==>analyzeا�� ^��+�ار �jmp eax ���2-2 دو/�ر� در رو$

� 2pushad �2^�� در ���� ه���2 1; �� ��2 ا��2 .\ رت واB< د�� "� را /� ^�� در�( �1ر$ را 1; /�ا$ #� upx � �� ا�=�م �� داد�� ا�=�م �2ه�2 �#*#� popad ارا '2

oep در رو$ f7را زد� و /# /� �� f9 �� و ��_ �2-?ار bp /# از ان �� '�ش�1د� در رو$ ا\�6 +�ار ��2-2��

viola you are at the oep.

�2 ^�ل /����; را دا�X �1د� و ��_ ا��ا او'�2*��?&2� .

Page 20: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢٠

Mup ASPack v2 12

)��A4 روش ////در�; ���7///ا/?اره�///هف///���;

;���:

ب ��+[ دار�� ا�E�� ورژن '&� Eوف�#�ASPACK ;1 ٢ارs١٢ ��ه�( را /; \ رت د��� ا� �1٢�2 ا�� روش "�� /�ا$ ورژن +��6 ان �#s١ . ه� �1ر 1

:هف

AsPacked.exe

: ا/?اره� OLLYDBG

,OLLY DUMP PLUGIN قLE ذه� '��8-� و

:در�; ���7 ٢/١٠

��� �: Mr_geek

:����� و اد�( JNOP790

:روش

�( �2ه�2/����; راY� اب � � E م�I2' ;/ و ���0 ن /�ز �2&2�� .در د�

) Entry point Alert( � Compressed(ا�0 /����; ^��( ��1?�� �84د�0 را دا"( /�"; '�I2م E �$ دوم رادر��2&2� )4

code( )�ه �د� �8�c( ا���ن در /����; �� از ا�� ^� .NO �2�?2� را .

ب او��2 .2?$ 1; �� /E ��ان ��2ز دار ;IMAGE BASE )�ه...ALT+M �! �2�?2� راMEMORY MAP ;/ �! �2/��PE HEADER �2 /�ز " د /; �*( '��2� )1�^ �2&

; و�1د� /# از ا���7ب ا�� +�*( ^�ل �261 را�( �?0 DUMP �2را ا���7ب�; /# از .�2&c\ ��در ا . /; ا�=� �PAGE DOWN�2��2 /�ر زدن ٢

Page 21: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢١

PAGE DOWN) /?ن 261 ;�c\ $را از روIQ(

ب EIMAGE BASE �2��� ..را �2��; ه��� را 1; /�ز �1د�� �2c\ ��^ ب E..... 2] را "�وع &� ب ^�� ا�E�2&2�.

� در د�� ر ا�#*3 ...ه����EP �2 در �� ; "�وع /����; '� "� �#PUSHAD. �; ر�2��� CALL�2��2� .../; د�� ر ا�#*F8 3/� زدن 261 ��ESP د 82� ?��+ ;1 �� رو$ �82

; . را ا���7ب �2&Follow In Dump�2ان �261 را�( �1د� و 0?�

v2�و ��_ /� رو$ ا�DRAG ( �A/� 281ن � س رو$ ا��A ( /��( اول را ا���7ب { DUMP^�ل در ��_ ...�261 را�( �;�?0 BREAK POINT ن �_ و HARDWAREو ��_ BP �� ه*� ON ACCESS _� .را ا���7ب �2*��DWORD �2و �

261f9 �22� !!!!)ا�0 ���� . /�ر ا�� 261 را ��1 �2?��2 ( را �2?��2 !� 1 ز�� را /

Page 22: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢٢

/��RETN �2را زد� !� /; F8^�ل .ه����OEP �2 در ..را �2?��2 !� /; دا3E ان /�و�� ه را F7و+( $ /; ان ر�2��

;ل �621 را�( �1د� و ^��?0 Analysis > Analyze code �! �2�?2� را ...

OEP = 401000- IM1GE BASE (400000) =1000

1DUMP �2^�ل �4�3 را /; ا�� \ رت ��.

�-/ b�1 :�&� ه� در/�ر�/; رو!�2 ����ل ��ز /��2 ا�2 ./�ا^�� ��2 /chj147و ����ل ه� jnop790 :ا��

Page 23: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢٣

Mup ASPack v1 08 04 ا/?اره� و هف-

Olly debug (OD) CRACK ME )pe) portable executableاLKع از ��4(

...�&� و+( ،�I? و

�2 ا�2 /� ا��&�ه�$ �#�وف ا�� �crack me ��! ا�� ����#� دار��� ��1ر د���� ا�=��م 21 ��را /�ا^�� ا� !Ac/ �*1*�2 .; در دا3E �� �4�3 '� "� �2-?رد

روش-

�=1PE header�2؟ +�ار �2-�2د و .- �; اون '2ا 1

k+ا :/; ا�� \ رت '2اش �1د) �� ه*82;( � اب � ال ا� ن �2�( ا�� �82; در /#@� � رت od/# از � د "ن در entry point ا�0 �\ ;/ xxxxxxxx ;�"�/ PE header ���در /���$ ا

.�� +�ار �0ffff00002-2 & (xxxxxxxx)ادرس 00456000ه�( ep/�ا$ ا�� �4�3

:در ��2=; 0ffff0000 = 00450000 & 00456000 :ه�( pe headerادرس ز��

400000}در�H �82; >= '_ 00450000 1*�� ه�( از pe header'_ ادرس

��= ب ^�� در 'ECPU �2�� ��اغ ا�� ادرس� :

>Ctrl+G >type 400000 ->enter >click right this pane >view > executable files >click right this pane>choose 'Special' -> choose 'PE header'

2��ت /�ا� ن ��2د �B 2� 1; ه*; !�2!!!!

Page 24: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢٤

��������

����

Address |Hex dump |Data |Comment

00400000 4D 5A ASCII "MZ" ; DOS EXE Signature

00400002 5000 DW 0050 ; DOS_PartPag = 50

(80.)

00400004 0200 DW 0002 ; DOS_PageCnt = 2

00400006 0000 DW 0000 ; DOS_ReloCnt = 0

00400008 0400 DW 0004 ; DOS_HdrSize = 4

0040000A 0F00 DW 000F ; DOS_MinMem = F (15.)

0040000C FFFF DW FFFF ; DOS_MaxMem = FFFF

(65535.)

0040000E 0000 DW 0000 ; DOS_ReloSS = 0

00400010 B800 DW 00B8 ; DOS_ExeSP = B8

00400012 0000 DW 0000 ; DOS_ChkSum = 0

00400014 0000 DW 0000 ; DOS_ExeIP = 0

00400016 0000 DW 0000 ; DOS_ReloCS = 0

00400018 4000 DW 0040 ; DOS_TablOff = 40

0040001A 1A00 DW 001A ; DOS_Overlay = 1A

Page 25: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢٥

0040001C 00 DB 00

0040001D 00 DB 00

0040001E 00 DB 00

0040001F 00 DB 00

00400020 00 DB 00

00400021 00 DB 00

00400022 00 DB 00

00400023 00 DB 00

00400024 00 DB 00

00400025 00 DB 00

00400026 00 DB 00

00400027 00 DB 00

00400028 00 DB 00

00400029 00 DB 00

0040002A 00 DB 00

0040002B 00 DB 00

0040002C 00 DB 00

0040002D 00 DB 00

0040002E 00 DB 00

0040002F 00 DB 00

00400030 00 DB 00

00400031 00 DB 00

00400032 00 DB 00

00400033 00 DB 00

00400034 00 DB 00

00400035 00 DB 00

00400036 00 DB 00

00400037 00 DB 00

00400038 00 DB 00

00400039 00 DB 00

0040003A 00 DB 00

0040003B 00 DB 00

0040003C 00010000 DD 00000100 ; Offset to PE signature (<----

-very important)

<.............>

00400100 50 45 00 00 ASCII "PE" ; PE signature (PE)

00400104 4C01 DW 014C ; Machine =

IMAGE_FILE_MACHINE_I386

00400106 0A00 DW 000A ;

NumberOfSections = A (10.) 00400108 195E422A DD 2A425E19 ; TimeDateStamp =

2A425E19

0040010C 00000000 DD 00000000 ; PointerToSymbolTable

= 0

00400110 00000000 DD 00000000 ; NumberOfSymbols = 0

00400114 E000 DW 00E0 ; SizeOfOptionalHeader

= E0 (224.)

00400116 8E81 DW 818E ; Characteristics =

EXECUTABLE_IMAGE|32BIT_MACHINE|LINE_NUMS_STRIPPED|LOCAL_SYMS_STRIPPED

|BYTES_REVERSED_LO|BYTES_REVERSED_HI

00400118 0B01 DW 010B ; MagicNumber = PE32

0040011A 02 DB 02 ; MajorLinkerVersion =

2

0040011B 19 DB 19 ; MinorLinkerVersion =

19 (25.)

0040011C 00380400 DD 00043800 ; SizeOfCode = 43800

(276480.)

00400120 00CE0000 DD 0000CE00 ; SizeOfInitializedData

= CE00 (52736.)

Page 26: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢٦

00400124 00000000 DD 00000000 ;

SizeOfUninitializedData = 0

00400128 00600500 DD 00056000 ;

AddressOfEntryPoint = 56000 0040012C 00100000 DD 00001000 ; BaseOfCode = 1000

00400130 00500400 DD 00045000 ; BaseOfData = 45000

00400134 00004000 DD 00400000 ; ImageBase = 400000 00400138 00100000 DD 00001000 ; SectionAlignment =

1000

0040013C 00020000 DD 00000200 ; FileAlignment = 200

00400140 0100 DW 0001 ; MajorOSVersion = 1

00400142 0000 DW 0000 ; MinorOSVersion = 0

00400144 0000 DW 0000 ; MajorImageVersion = 0

00400146 0000 DW 0000 ; MinorImageVersion = 0

00400148 0400 DW 0004 ; MajorSubsystemVersion

= 4

0040014A 0000 DW 0000 ; MinorSubsystemVersion

= 0

0040014C 00000000 DD 00000000 ; Reserved

00400150 00800500 DD 00058000 ; SizeOfImage = 58000

(360448.)

00400154 00040000 DD 00000400 ; SizeOfHeaders = 400

(1024.)

00400158 00000000 DD 00000000 ; CheckSum = 0

0040015C 0200 DW 0002 ; Subsystem =

IMAGE_SUBSYSTEM_WINDOWS_GUI

0040015E 0000 DW 0000 ; DLLCharacteristics =

0

00400160 00001000 DD 00100000 ; SizeOfStackReserve =

100000 (1048576.)

00400164 00400000 DD 00004000 ; SizeOfStackCommit =

4000 (16384.)

00400168 00001000 DD 00100000 ; SizeOfHeapReserve =

100000 (1048576.)

0040016C 00100000 DD 00001000 ; SizeOfHeapCommit =

1000 (4096.)

00400170 00000000 DD 00000000 ; LoaderFlags = 0

00400174 10000000 DD 00000010 ; NumberOfRvaAndSizes =

10 (16.)

00400178 00000000 DD 00000000 ; Export Table address

= 0

0040017C 00000000 DD 00000000 ; Export Table size = 0

00400180 F4680500 DD 000568F4 ; Import Table

address = 568F4 00400184 28000000 DD 00000028 ; Import Table size =

28 (40.)

00400188 00000500 DD 00050000 ; Resource Table

address = 50000

0040018C 00520000 DD 00005200 ; Resource Table size =

5200 (20992.)

00400190 00000000 DD 00000000 ; Exception Table

address = 0

00400194 00000000 DD 00000000 ; Exception Table size

= 0

00400198 00000000 DD 00000000 ; Certificate File

pointer = 0

0040019C 00000000 DD 00000000 ; Certificate Table

size = 0

004001A0 8C670500 DD 0005678C ; Relocation Table

address = 5678C

Page 27: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢٧

004001A4 08000000 DD 00000008 ; Relocation Table size

= 8

004001A8 00000000 DD 00000000 ; Debug Data address =

0

004001AC 00000000 DD 00000000 ; Debug Data size = 0

004001B0 18A00400 DD 0004A018 ; Architecture Data

address = 4A018

004001B4 11000000 DD 00000011 ; Architecture Data

size = 11 (17.)

004001B8 00000000 DD 00000000 ; Global Ptr address =

0

004001BC 00000000 DD 00000000 ; Must be 0

004001C0 10600500 DD 00056010 ; TLS Table address =

56010

004001C4 18000000 DD 00000018 ; TLS Table size = 18

(24.)

004001C8 00000000 DD 00000000 ; Load Config Table

address = 0

004001CC 00000000 DD 00000000 ; Load Config Table

size = 0

004001D0 00000000 DD 00000000 ; Bound Import Table

address = 0

004001D4 00000000 DD 00000000 ; Bound Import Table

size = 0

004001D8 00000000 DD 00000000 ; Import Address Table

address = 0

004001DC 00000000 DD 00000000 ; Import Address Table

size = 0

004001E0 00000000 DD 00000000 ; Delay Import

Descriptor address = 0

004001E4 00000000 DD 00000000 ; Delay Import

Descriptor size = 0

004001E8 00000000 DD 00000000 ; COM+ Runtime Header

address = 0

004001EC 00000000 DD 00000000 ; Import Address Table

size = 0

004001F0 00000000 DD 00000000 ; Reserved

004001F4 00001000 DD 00100000 ; Reserved

004001F8 43 4F 44 45 >ASCII "CODE" ; SECTION 00400200 00400400 DD 00044000 ; VirtualSize = 44000

(278528.)

00400204 00100000 DD 00001000 ; VirtualAddress = 1000

00400208 00FE0100 DD 0001FE00 ; SizeOfRawData = 1FE00

(130560.)

0040020C 00040000 DD 00000400 ; PointerToRawData =

400

00400210 00000000 DD 00000000 ; PointerToRelocations

= 0

00400214 00000000 DD 00000000 ; PointerToLineNumbers

= 0

00400218 0000 DW 0000 ; NumberOfRelocations =

0

0040021A 0000 DW 0000 ; NumberOfLineNumbers =

0

0040021C 400000C0 DD C0000040 ; Characteristics =

INITIALIZED_DATA|READ|WRITE

00400220 44 41 54 41 >ASCII "DATA" ; SECTION 00400228 00100000 DD 00001000 ; VirtualSize = 1000

(4096.)

0040022C 00500400 DD 00045000 ; VirtualAddress =

45000

Page 28: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢٨

00400230 00080000 DD 00000800 ; SizeOfRawData = 800

(2048.)

00400234 00020200 DD 00020200 ; PointerToRawData =

20200

00400238 00000000 DD 00000000 ; PointerToRelocations

= 0

0040023C 00000000 DD 00000000 ; PointerToLineNumbers

= 0

00400240 0000 DW 0000 ; NumberOfRelocations =

0

00400242 0000 DW 0000 ; NumberOfLineNumbers =

0

00400244 400000C0 DD C0000040 ; Characteristics =

INITIALIZED_DATA|READ|WRITE

00400248 42 53 53 00 >ASCII "BSS" ; SECTION 00400250 00100000 DD 00001000 ; VirtualSize = 1000

(4096.)

00400254 00600400 DD 00046000 ; VirtualAddress =

46000

00400258 00000000 DD 00000000 ; SizeOfRawData = 0

0040025C 000A0200 DD 00020A00 ; PointerToRawData =

20A00

00400260 00000000 DD 00000000 ; PointerToRelocations

= 0

00400264 00000000 DD 00000000 ; PointerToLineNumbers

= 0

00400268 0000 DW 0000 ; NumberOfRelocations =

0

0040026A 0000 DW 0000 ; NumberOfLineNumbers =

0

0040026C 400000C0 DD C0000040 ; Characteristics =

INITIALIZED_DATA|READ|WRITE

00400270 2E 69 64 61 >ASCII ".idata" ; SECTION 00400278 00200000 DD 00002000 ; VirtualSize = 2000

(8192.)

0040027C 00700400 DD 00047000 ; VirtualAddress =

47000

00400280 000E0000 DD 00000E00 ; SizeOfRawData = E00

(3584.)

00400284 000A0200 DD 00020A00 ; PointerToRawData =

20A00

00400288 00000000 DD 00000000 ; PointerToRelocations

= 0

0040028C 00000000 DD 00000000 ; PointerToLineNumbers

= 0

00400290 0000 DW 0000 ; NumberOfRelocations =

0

00400292 0000 DW 0000 ; NumberOfLineNumbers =

0

00400294 400000C0 DD C0000040 ; Characteristics =

INITIALIZED_DATA|READ|WRITE

00400298 2E 74 6C 73 >ASCII ".tls" ; SECTION 004002A0 00100000 DD 00001000 ; VirtualSize = 1000

(4096.)

004002A4 00900400 DD 00049000 ; VirtualAddress =

49000

004002A8 00000000 DD 00000000 ; SizeOfRawData = 0

004002AC 00180200 DD 00021800 ; PointerToRawData =

21800

004002B0 00000000 DD 00000000 ; PointerToRelocations

= 0

Page 29: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٢٩

004002B4 00000000 DD 00000000 ; PointerToLineNumbers

= 0

004002B8 0000 DW 0000 ; NumberOfRelocations =

0

004002BA 0000 DW 0000 ; NumberOfLineNumbers =

0

004002BC 400000C0 DD C0000040 ; Characteristics =

INITIALIZED_DATA|READ|WRITE

004002C0 2E 72 64 61 >ASCII ".rdata" ; SECTION 004002C8 00100000 DD 00001000 ; VirtualSize = 1000

(4096.)

004002CC 00A00400 DD 0004A000 ; VirtualAddress =

4A000

004002D0 00020000 DD 00000200 ; SizeOfRawData = 200

(512.)

004002D4 00180200 DD 00021800 ; PointerToRawData =

21800

004002D8 00000000 DD 00000000 ; PointerToRelocations

= 0

004002DC 00000000 DD 00000000 ; PointerToLineNumbers

= 0

004002E0 0000 DW 0000 ; NumberOfRelocations =

0

004002E2 0000 DW 0000 ; NumberOfLineNumbers =

0

004002E4 400000C0 DD C0000040 ; Characteristics =

INITIALIZED_DATA|READ|WRITE

004002E8 2E 72 65 6C >ASCII ".reloc" ; SECTION 004002F0 00500000 DD 00005000 ; VirtualSize = 5000

(20480.)

004002F4 00B00400 DD 0004B000 ; VirtualAddress =

4B000

004002F8 00000000 DD 00000000 ; SizeOfRawData = 0

004002FC 001A0200 DD 00021A00 ; PointerToRawData =

21A00

00400300 00000000 DD 00000000 ; PointerToRelocations

= 0

00400304 00000000 DD 00000000 ; PointerToLineNumbers

= 0

00400308 0000 DW 0000 ; NumberOfRelocations =

0

0040030A 0000 DW 0000 ; NumberOfLineNumbers =

0

0040030C 400000C0 DD C0000040 ; Characteristics =

INITIALIZED_DATA|READ|WRITE

00400310 2E 72 73 72 >ASCII ".rsrc" ; SECTION 00400318 00600000 DD 00006000 ; VirtualSize = 6000

(24576.)

0040031C 00000500 DD 00050000 ; VirtualAddress =

50000

00400320 00520000 DD 00005200 ; SizeOfRawData = 5200

(20992.)

00400324 001A0200 DD 00021A00 ; PointerToRawData =

21A00

00400328 00000000 DD 00000000 ; PointerToRelocations

= 0

0040032C 00000000 DD 00000000 ; PointerToLineNumbers

= 0

00400330 0000 DW 0000 ; NumberOfRelocations =

0

Page 30: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣٠

00400332 0000 DW 0000 ; NumberOfLineNumbers =

0

00400334 400000C0 DD C0000040 ; Characteristics =

INITIALIZED_DATA|READ|WRITE

00400338 2E 61 73 70 >ASCII ".aspack" ; SECTION 00400340 00100000 DD 00001000 ; VirtualSize = 1000

(4096.)

00400344 00600500 DD 00056000 ; VirtualAddress =

56000

00400348 000A0000 DD 00000A00 ; SizeOfRawData = A00

(2560.)

0040034C 006C0200 DD 00026C00 ; PointerToRawData =

26C00

00400350 00000000 DD 00000000 ; PointerToRelocations

= 0

00400354 00000000 DD 00000000 ; PointerToLineNumbers

= 0

00400358 0000 DW 0000 ; NumberOfRelocations =

0

0040035A 0000 DW 0000 ; NumberOfLineNumbers =

0

0040035C 400000C0 DD C0000040 ; Characteristics =

INITIALIZED_DATA|READ|WRITE

00400360 2E 72 73 72 >ASCII ".rsrc" ; SECTION 00400368 00100000 DD 00001000 ; VirtualSize = 1000

(4096.)

0040036C 00700500 DD 00057000 ; VirtualAddress =

57000

00400370 00000000 DD 00000000 ; SizeOfRawData = 0

00400374 00760200 DD 00027600 ; PointerToRawData =

27600

00400378 00000000 DD 00000000 ; PointerToRelocations

= 0

0040037C 00000000 DD 00000000 ; PointerToLineNumbers

= 0

00400380 0000 DW 0000 ; NumberOfRelocations =

0

00400382 0000 DW 0000 ; NumberOfLineNumbers =

0

00400384 400000C0 DD C0000040 ; Characteristics =

INITIALIZED_DATA|READ|WRITE

2��ت .� /�( ��2د؟B ب از ا�� !E

+ 3��4 �� $�A�*�+ اد �&�8 ه� و#!pe = ١٠ )�4٠٠١٠{ در ا� +image base =400000 )�4٠٠١٣{ در ا} ) �٠٠٠� = epادرس +rva( )�4٠٠١٢٨{در ا ٠٠١٨٠{ در ا4�import table = 568f4 )ادرس +

1�2 ؟���2 ا�2^�� �� ا�1�8�2 وا+#� رو '2ا !� �&١٠اول /�� .١ ٢. pe header $را /�ا :

١. OEP �� original entry point ٢. ITA �� import table address

�2 .در�( 1 _&24

Page 31: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣١

(: PE header'+'10 section' --> original our .exe' /# از �ا��ز$> '_

�2ه^�� �� �1ر ه�$ /�� رو ا�=�م �2

١ –ITA: ط /; �� �2و��2 1; �� /���/�� )*�+ ;"�/ �" ;�" � �c�1; /� د ;�ITA

. +�ار �IDATA " �8&� ��}��2-2."در

RVA of '.idata' is 47000 (at offset 0040027C) -->offset of ITA = 47000

:OEP �&�8 وا+#� و ١٠'2ا �1دن -٢در oEPو)�#� ا\3 /����; ه�((ا��� ه�( IDATA.�� �2و��2 1; .; و+(

=1��). �2 ب .2&�ر �2&E:

>Ctrl+G >type '447000'

ن ادرس .ITA )�) :هImage Base(+(RVA of section 4)=400000+47000=447000

�� breakpoint on access �' �/ ��رت ز ��2( ( در /��( ا�� ادرس /; \&2�( >Click right mouse on byte at this address -> 'Breakpoint' ->choose 'Memory, on access' >and run (by F9)

و در ا�� +�*( ��2����2 0045665F 8A06 MOV AL,BYTE PTR DS:[ESI] 00456661 46 INC ESI 00456662 8807 MOV BYTE PTR DS:[EDI],AL

و+��� �&��8 وا+#�� ���2ز دار��� '�_ ١٠/��ا$ ا�&�; ��� ....^�� "��� از ��� /����� .��ا ا�&��ر رو ��1د�� رت ا���� ٧٠٠٠{{/����; /; ادرس �\ ;�/ د"�E ( 1; /����; در ا��� ادرس�اش ا�� ه �#� ;��2�

در ��2ر�) ;/ESI=447000از؟/ ��-� �� (

ب ^�� د�-; /; ا�� E BP فW^ /�����; از ^���( ^�� �� در ���� ه���2 �1; �2&�2��2ز �ار�� '_ او� . در ا�� ا�(و �84د�0'� / دن

**************************١***********************

در ا�=� ��62E4565C1�2��2 را^( /; 004565C1 61 POPAD 004565C2 75 08 JNZ SHORT CRACKME#.004565CC

Page 32: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣٢

004565C4 B8 01000000 MOV EAX, 1 004565C9 C2 0C00 RETN 0C 004565CC 68 00000000 PUSH 0 <------------- what? 004565D1 C3 RETN

ا����د ا�� �#� اش ا�� ه�( 1; /����; ا��� "� ا�(4565C1و+�� /����; در �/�ا�� �� �� /BP ��ه�2 /� زدن در اادرس +�ار �2 F2

:در /��$ ا�� 1ه�$ ا��� "� ا� دار��

004565C1 61 POPAD 004565C2 75 08 JNZ SHORT CRACKME#.004565CC 004565C4 B8 01000000 MOV EAX,1 004565C9 C2 0C00 RETN 0C 004565CC 68 C4464400 PUSH CRACKME#.004446C4 <--EP=004446C4 004565D1 C3 RETN

*********************٢********************

^�� د�-; .2&�ر /�� ا�=�م داد1�2 و /#١٠/6; /�� X�8 رو دا�&� �! PE HEADER �2 .رو 1 _&24

24PE HEADER&_ و دا�X ) ا�5

fix: + -->offset of ITA = 47000 (OD done :) + EOP=004446C4 Do as: (at pane Dump) >Ctrl+G >type 00400128 >fix 4 byte at this address to : C4 46 04 00

.�ا ؟ ن .EP �/ )�ا/� ه�/ ��OPE=446C4ن .

(VA of OEP)-(Image Base)=004446C4-00400000=000446C4

ب Epe header رت ز�� ا��ا dump �2 در�( و 24&_ " ^�� /; \&2�:

;�; �261 را�( �1د� 0?�c\ $در اBackup ; را ا���7ب و /# 0?�

Save data to fileو LY� ا�� �� �/ _�� ١�2&2� ��2Eا��ا ذ .

�&24١٠�8&_ و دا�X )ب

�8&�١: K; ا�� �&�8 را /; ا�� ) image base + rva (٠١٠٠٠{در ادرس /�� ;�c\ در

Xرت دا� \�2&2�

Page 33: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣٣

>Ctrl+G >type 401000

;�?0 _��_ را�( �261 �1د� �� backup #/ و save data to file LY�، م�� �� _�� s1 ; ب !*�م "saveو /# 0?�E ، .

3*U ��/ رت ب /�ا$ /�2; �&�8 ه� /; ه*�ن \E�2�2 را /; \ رت ز�� !��X ا�� ادرس ه��2&&2�

sec 2: dump at 445000 -> name 's2' sec 3: dump at 446000 -> name 's3' sec 4: dump at 447000 -> name 's4' sec 5: dump at 449000 -> name 's5' sec 6: dump at 44A000 -> name 's6' sec 7: dump at 44B000 -> name 's7' sec 8: dump at 450000 -> name 's8' sec 9: dump at 456000 -> name 's9' sec 10: dump at 457000 -> name 's10'

�4��3 /�; ���م �را در�� "�� dump/# از ذ��2E �1دن !*�م �&�8 ه� /�� ����4ن 1��� داس !*��م �4��3 ه��$ temp ����2E�2ذ��&2�) Eادرس ����$ را��1; ذ ����/ ;���� ر ����Yل ا���K ;��/ ��"�/ ����2 ���1د�� ه*���ا� �4���3 ه���

c:/s1.mem 3*U ��رت ز �2 /�ا$ ا��ا$ ���4ن ه� /; \&2�run > cmd > copy /b(

copy /b 1.mem+s1.mem+s2.mem+s3.mem+s4.mem+s5.mem+s6.mem+s7.mem+s8.mem+s9.mem+s10.mem temp.exe

82 �� temp.exe�4 ;1/# از ا��ا$ �4�3 � ;� �� !!!�3 �1ر �*2& .�ا ؟ ��pe header ( دو�ه ��� ب /�ا$ 24&_ �1دن ا�� ا"���ه�ت /�� /; \ رت itaا"�E )�ه ���ا"�

�21 3*U ��( در �4�3 (ز�ا4.(

_&24pe header: .�� ا�� 1ه�$ ه-?ا رادر /����; /� �� ه-?ا اد�� ر !�22I �2ه�2

180: 00 181: 70 182: 04 209: 40 20A: 04 20D: 10 231: 10 235: 50 236: 04 259: 10 25D: 60 25E: 04

Page 34: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣٤

281: 20 285: 70 286: 04 2A9: 10 2AD: 90 2AE: 04 2D1: 10 2D5: A0 2D6: 04 2F9: 50 2FD: B0 2FE: 04 321: 60 325: 00 326: 05 349: 10 34D: 60 34E: 05 371: 10 375: 70 376: 05

_&24ita: �� 1; ا�� +�*( را 24&_ �1د�� ا�� . ر " 1; ه ز ا"���� ه�(؟

�2&2� 3*U ��رت ز :/�ا$ ا�� �1ر /; \

:/; ا�� \ رت ا�=�م �2ه�2***٢***!� *** ١***از ��^6; ��bp 4563 در ادرسdb;*0زدن د �/f2 �� �= �2-?ار�� /# /����; در ا�=� ��2��� و ^�� �� ا�

���2-2� X3.دا��+ 3Y� و /�2; �1ر ه�....

.�ا ا�� �1ر را �1د��؟ د! ن � اب /�� E ��/ .........ا�

21 �� ا���2 ا�� /����; را ا�! �*" 2"��� ;��E.

�� 1; ا��اد$ ه�( 1; /;-/ ��/ �Aدر ا�� �1 �� ;2\ :"*� ا�� � ارد را در رk4 ان !

ا�2 از ! �� �*" ollydump ( اوردن�ا$ /�/ oep2 ا���cد� 1 ا���cد� 12 lordpe ه� از dump/�ا$

�iat vو /�ا$ 24&_ !imprec د از ا�� داد��cه� ا���2��*� :

OEP : 00001000 RVA : 00002000 Size : 00001000

Page 35: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣٥

Inline Patching ASPacked Inline Patching ASPacked Inline Patching ASPacked Inline Patching ASPacked prog.prog.prog.prog.

( c 2.1iolo System Shield Shield v:هف

Finalexe.systemshield/com.iolo.ss://http( SERIAL NUMBER: '�و!&(

�&' :ASPACK ��� � :ANDROID-SPITEFUL > � :v� ��

JNOP790: و��ا�H و !��*;

1�2 در INLINE ��4در ا�� /����; �� �72 اه�2 ا�� 1 را /; \ رت �� .3 وارد 1�2 /ون ا�&; ا��ا ا�0055C06C 3E 8B 45 DC 90

:دو را� '82�Aد$ ا$ dword ا�� ��5DB39Ch /; ا�=� �-�� ��2و�� ��� OEP رت ز�� دارد OEP RVAرا /; \

1�2 ٨٠، ^�ل �� ا��ا /� ,(173118) �� �� ^�ل �� �� ! ا�1 �2 DOS stub(ادرس /#از ( ا��ا !# . +�ار ده٠٠٠٨٠h�2{د ��T را در � ر

/� ا�رو�2 ه�( 1; /; \ رت U*�� وارد �1ر "�E )دو� v� :ا�� را� دوم !

:را �oep �2/�2ا�=� ���� ه�( 1; ��

005DB3B0 61 POPAD

005DB3B1 75 08 JNZ SHORT SystemSh.005DB3BB

005DB3B3 B8 01000000 MOV EAX,1

005DB3B8 C2 0C00 RETN 0C

005DB3BB 68 18315700 PUSH SystemSh.00573118

005DB3C0 C3 RETN

�2 ط را �� .&� �2& E ��ل ا�^:

005DB3B0 61 POPAD

005DB3B1 75 08 JNZ SHORT SystemSh.005DB3BB

005DB3B3 B8 01000000 MOV EAX,1

005DB3B8 C2 0C00 RETN 0C

005DB3BB 68 18315700 PUSH SystemSh.00573118

005DB3C0 C3 RETN

005DB3C1 8B85 26040000 MOV EAX,DWORD PTR SS:[EBP+426]

005DB3C7 8D8D 3B040000 LEA ECX,DWORD PTR SS:[EBP+43B]

005DB3CD 51 PUSH ECX

005DB3CE 50 PUSH EAX

005DB3CF FF95 480F0000 CALL DWORD PTR SS:[EBP+F48]

005DB3D5 8985 54050000 MOV DWORD PTR SS:[EBP+554],EAX

005DB3DB 8D85 47040000 LEA EAX,DWORD PTR SS:[EBP+447]

005DB3E1 50 PUSH EAX

Page 36: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣٦

005DB3E2 FF95 500F0000 CALL DWORD PTR SS:[EBP+F50]

005DB3E8 8985 2A040000 MOV DWORD PTR SS:[EBP+42A],EAX

005DB3EE 8D8D 52040000 LEA ECX,DWORD PTR SS:[EBP+452]

005DB3F4 51 PUSH ECX

005DB3F5 50 PUSH EAX

005DB3F6 FF95 480F0000 CALL DWORD PTR SS:[EBP+F48]

005DB3FC 8985 58050000 MOV DWORD PTR SS:[EBP+558],EAX

005DB402 8B85 2A040000 MOV EAX,DWORD PTR SS:[EBP+42A]

005DB408 8D8D 5E040000 LEA ECX,DWORD PTR SS:[EBP+45E]

005DB40E 51 PUSH ECX

005DB40F 50 PUSH EAX

005DB410 FF95 480F0000 CALL DWORD PTR SS:[EBP+F48]

005DB416 FFD0 CALL EAX

005DB418 83C4 10 ADD ESP,10

005DB41B 5F POP EDI

; kernel32.77E814C7

005DB41C 6A 30 PUSH 30

005DB41E 8D9D 68040000 LEA EBX,DWORD PTR SS:[EBP+468]

005DB424 53 PUSH EBX

005DB425 57 PUSH EDI

005DB426 6A 00 PUSH 0

005DB428 FF95 58050000 CALL DWORD PTR SS:[EBP+558]

005DB42E 6A FF PUSH -1

005DB430 FF95 54050000 CALL DWORD PTR SS:[EBP+554]

ط /����; '� "� از E ��ا "�/ �" �' �� :در �4��6 1; /� ا�

005DB3C1 8B85 26040000 MOV EAX,DWORD PTR SS:[EBP+426] �!

005DB430 FF95 54050000 CALL DWORD PTR SS:[EBP+554]

.�&� ه�( ;/ �� �A���/ ���1دن ا ر ا�� ه�( 1; �� ه*82; /� �� ^��( رو/�و ه���2 '_ /� ���=T ب �E

)*�oep �� 82� ���*�ا�� /; /�/) /� ا���cد� ( ه�� junk codeا�� در ^��2( ا�� 1ه� . راه . و� د دارد inline patchingرا^�� ��2 ان ا��A را !�22I داد و ^=� ز��د$ /�ا$

�2"�/ vE ��ا iVا :ا�� /�� �

005DB436 0000 ADD BYTE PTR DS:[EAX],AL

1 �22I! ��� ط /# از ان ^�2!� ه�� و � E از /����; و vE ��ا.. :� ه�(/; \ رت ز� �2I! _' inlineات /�ا$

005DB3A8 0BC9 OR ECX,ECX

; ntdll.77F532FA

005DB3AA 90 NOP

005DB3AB 90 NOP

005DB3AC 90 NOP

005DB3AD 90 NOP

005DB3AE 90 NOP

005DB3AF 90 NOP

005DB3B0 61 POPAD

005DB3B1 75 08 JNZ SHORT SystemSh.005DB3BB

Page 37: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣٧

005DB3B3 B8 01000000 MOV EAX,1

005DB3B8 C2 0C00 RETN 0C

005DB3BB C705 6CC05500 8>MOV DWORD PTR DS:[55C06C],90DC458B

005DB3C5 C605 70C05500 3>MOV BYTE PTR DS:[55C070],3E

005DB3CC 68 18315700 PUSH SystemSh.00573118

005DB3D1 C3 RETN

005DB3D2 90 NOP

005DB3D3 90 NOP

005DB3D4 90 NOP

�A���/ ���22ات اI! $(/�ا�ا��; " E ��/ 1; در �� 3 �� 1�2) ه**U ��رت ز \ ;/: C7 05 6C C0 55 00 8B 45 DC 90 C6 05 70 C0 55 00 3E 68 18 31 57 00 C3

90 90 90

اب /هinline patching Aspackا�2وارم /�ا$ !*�م � .

:را� � م 621 ه�(٦٧ /� ^=� zip.bkinlineا���cد� از ا/?ار !

: را� .�Aرم 2�� !!!!!"*� ا��ا /

MupMupMupMup FSG FSG FSG FSG 1.01.01.01.0

�����

&�ف %$�///روش///�! ///ا��اره ///ه�ف///�����

�����:

/� �2-�د� ١٩٨٩ ��ل ��/�; او��2 '&� /; S*دش و ه �E �2 و���وس�را�2 /; ز���� 1; او ��/ PKLite ر ��2��� 3���U داس ....���T4( �2&�د AV �/ ;�"W0 ل�� ���4( '&�� ه���� /�� '�2�8���� و و��وز در .

....1; ه� روز /� ر+�/( /�2 ا��A /��82 و /��82 ا4�B; "� د�� "com/exe ه�$

/��8�2 ،�� '&� �4�3 رو �2-�2د و او� �3Y /����; ز�X �84د� اش �2&; ، �1دن ه�( �1رش �84د� '&� /����; ا���cد� �82 ا�� ا��وز� در ا\3 �1رش B b�1 ��1دن "�� �1; �8�2; ^=�و +�L /�ا$ �1 �1دن

1�2 و /# ��ا; �-� ا�&; اول �*�82*�3/; را^�� د�_ .c0( '�و!&� ر "� !� �� '&� �� ....غ ا�

و $ B د��� گ ه�� ��1ر ��ًا ر . /�� �� د��� �� /� /����; ه�$ �7[ ص ا�� �1ر را �1د /�ا$ ا��� �1دن . ه� روش W0ا"�� trace ه� 1 �1دن !� /; �4�3 ا\�6 د�( '2ا �&2 و ^�� B��ا�1دن و ا

ض ��1دن و ��Eاب ��1دن �U ره�� ه��( import table ;�1از د�-� ا+ا��ت /#@� '&� ه� و �� '�و!&�2] �8&3 ��ز ه�(&� .در ه-�م ا�

Page 38: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣٨

� �1ر '&� /; \ رت ��د� /; ا�� \ رت ه�( ��:;����/ ;1 ���- را ا���ا �2&�2� +��*( '�� "�� ه2] /����; را /; AU� دارد ا��ا "� و &�داد� ه� را دا�T4�^ 3�E; /��ر �2&�; و و 1 �7[ \� 1; �1ر ا�

_� .... و ع /����; ��2ود ; "�و� /; � � در � .!!!!�1ر ه� 1�� �2�(�2��" OEP (original entry point) ن �ه*1; ا�� �� ; }وردن /�(

)��A4: �///ا/?اره�///هف�� ^�ف }�E///روش///� <///و��ا�H و !��*;///�

UNPACK ME :هف

OllyDbg 1.10 ,OllyDump 2.21,ImpRec 1.6 , PEID (Lord PE 1.4 (:ا/?اره�

��� �:HACNHO

JNOP790 :و��ا�H و !��*;

> �:١/١٠

:روش

ب /�ا$ "�وع ه�( E $ا$ا�� '&� ه� �&� از '&� ه��/ �\ . !�ز� �1ره��7[

v� رت ز��� /��( 1PE EDITOR*� ا�ULKت از + ���K�PEID / LORDPE )* ا/�ا !\ ;/ :��2ور��

Page 39: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٣٩

ب �� دار��E: EP: 5000

C00000E0/�ا/� /�)FLAGS(*; '�.� ه� هIMAGE BASE: 400000

IMPORT TABLE: 50F AND SIZE: 6B �*1 ��/ ��^OLLY )*��+ ;�/ �2�1 �2�T رت ) ALT+O(رOPTION ;��4 را !]�را SFX و /�; ا��2&2� �2T!:

Page 40: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤٠

:�� ا�=� +�ار دار��... �OLLY �2���c2^�� /����; را در

��^ ��OEP�/ )�1; /�ا/� ه �2� : وا+#� را �2OEP IN OLLY –IMAGE BASE =401000-400000=1000

�� vE ��ب درا EBP ار داد��+ )F2 ( _�DUMP�2را �2?��2 و /# ا��ا /; ا�� \ رت F9و �&2�:

Page 41: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤١

ب /#��� ���EENTRY POINT ه*���و ١٠٠٠را ;FLAGS(characteristics in Olly) را ;�/٠C000004 ��22 داد�I! � ن /��� را �*�� OLLY /#� از ا��� !��2Iات _و ���. ���/IMOPRT

TABLE �2�� ن ���� ه*�� ن IMPREC '��_ ....را ه��� در���( 1����T� رد را /���ز ���1د� و /������; ���UNPACKME �2������* IAT ه������$ وارد ������1د� و �������_ ����261 ١٠٠٠ را OEPرا ا��������7ب �2

Autosearch #/و Get Imports �2�?2� :

را زد� و ���_ /�����; ���ن را ا����7ب ��1د� و FIXه� در�( ه�� ^�� 261 IMPORT/6; در��; ه*; �2&2� ��2Eن ذ ��T� رد ./� ��م �

Page 42: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤٢

2�PEID ;�1 �2^�ل �4�3 ذ��2E "� را ا��ا �1د� و /�� �� ا���� "�� /�����; /�; در��� ا���ا .�� ��1د� �2

دMASM32 / TASM32ا�� /����; /� ../ �" ;�" � . /� ا�=���م "�� ^���� ����2ز$ /��; : �&���; (��E ;��/ ?��2. ;��*ادم و ه���22 ���I! *( اد���( �&���8 .��2?$ را�در+��

IMPREC د � .)ه� �

Mup Mup Mup Mup Neolite Neolite Neolite Neolite 2.02.02.02.0

:ا/?اره�

Olly Debugger, OllyDump plug-in, Import Reconstructor

Win proxy 4.0 :هف

د!��*; ا$ ازاد از ��� 1; از '�!���� /; ا�-26�� و ��_ از ا�-26�� /; �4ر�� � )cپ ه � �� v� !

k��: BIW)rumble(

��7�:٢/١٠ -------------------------------------------------------------------------------------------------------

:روش

در�( /# ( !� /; ا�=� /��F8 �2 ��ن /�ز �1د� و 1*� /; �*( '���2 ^�1( �2&�2 /� �د��� 0 در /����; را;�" ): ز�� CALL در د�� ر ا�#*Neolite Executable File Compressor.. 3از ا�� �

Page 43: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤٣

: ��2و��CALL/; دا3E ا�� F7 ^�ل /�زدن

ESP �2/; ��ار ر�2��� &2� ��-� :

بE 3E*( را در دا�ا�� + �� DUMP �2��*2� 3*U ��رت ز 72 اه�2/�2/ �2 '_ /; \�:

Page 44: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤٤

ب ^�ل در ا�� +�*( �� ��2ز /; �� EBP _' ��٢ دار _� /��( اول را /�; ^���( ا����7ب در }ورد� و ��

�2��*2� 3*U ��ز ;\LE رت ) : �261 را�((/; \Breakpoint -> Hardware, on access -> Dword

�� �1د� !� /����; /; F9^�ل /� زدن \OEP ��/

ب /# از رد �1دن ا�� '�ش EJMP EAX) را زد�F8( �2��2� �= و /; ا�) EAX == OEP (00515973

�� �*��DUMP �2^�ل �� /����; را Click in Plugins -> Ollydump -> Dump debugged process

;�2 را /�;/����... را از ^��( '� در ��2ور��Rebuild Importا�� 0?�&��2 �2Eا� ذ .��م د�7

Page 45: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤٥

ب /�ا$ /�ز ��ز$ EIAT ه� ازIMPREC �2 رت ز�� ا���cد� �2&\ ;/ : /����; را از �2�( ��/ K; '2ا �1د� )١٢( 261IAT Auto Search ارم �� ����2 !� ���I2' �T� ه�� /را /; RVA ,SIZE را زد� و� را �2?�2* /����; ا$ 1; از +�3 ذFix Dump ��2E را زد� و ��_ Get Imports^�ل 261 )٣

دارد )_( /����; را /� ا�*� 1; در ا�Eش �� �1IMPRECد� / د�� را ا���7ب �2&�2 ^�ل ��2Eذ /� ا�=�م "� ا�( ...�2&E ;/ ?2. ;*1; ه �2� ./� /�ز �1دن ا�� 2� 3��4

اب �2ها�� روش /�ا$ ه�� �2( '� "� ��ِ �/ ;1 �6��4 .

2"��� ;��E.

Mup Mup Mup Mup neolite neolite neolite neolite 2.02.02.02.0

*2222* )��A4: �////� <///ا/?ار ه�///هف�� ^�ف ا�E///روش///�����///�

Smart Bomb PC Shutdown Demo v2.1: هف

در (ادرس

http://grinders.withernsea.com/tools/smart_bomb_pc_shutdown_v2.1(

1.10OllyDbg , ImpRec, LordPE:ا/?اره�

�>:�����

jnop790 2006-02-20 : و��ا �H !��*; و

:روش

��/ ��" ��' ;�����/ ��� ���ه��( pushad /��( /��2ور�� neolite او��2 ���� 1; �� /�� /�ا$ ا�) bدر ا���� ���2 "Eذ �� *U $ ه� ���رت ز��� در ) ه*; ر�2 olly/��ا$ ا��� ��1ر ��� ��� "��ط /�; \�

pushadرا زد� ��_ ctrl +t/�+�ار �2&�2 ، ا/�ا &2� X��! را �2 و /#ok _��ctrl +f11 :را �2?��2 !� /�ا�*�ن '2ا 1

Page 46: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤٦

اه�2 4�0(E ا�+ �= /# از 3��1 "ن �1ر �� در ا�

در ( ��261 را��( ��1د� ESPرا �8�4ر داد� ���_ در '=��� ر��2��� ه�� /�� رو$ f7/�ا$ +م /#$ ��� �=�; و ��_ /�� رو$ ) ه�( /�ا$ "*� "�� �4ق 1 12FFBCا��?0 Follow in Dump ��261

رت ز�� /� رو$ ان +�ار �2هBP �2را ا���7ب �1د� و �� ) WORD(�1د� و دو /��( اول \ ;/ Breakpoint->Hardware, on access->Word

Page 47: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤٧

/; دا3E ان ر�4; و ���_ در .� F7+�ار �RTEN �/ ;1 ���2-2/# ا��ا /����; �� د ر �� د�� را�#*3

! �2��' vE�� � JMP EAX (JMP OEP)

2�2 1; /� زدن � ٠١٠٠٠{1; ه�( . ه��OEP �2و �� در اول /; دا3E ان رF7 ;�4را �2

;�&��3 از ا�+ ;�����/ Xب /�ا$ دا�� EOLLY ;�1 �2�&2� 3�*U رت ��� /�; ا��� \�� را LORDPEرا /��2 /��ا$ ��1هDUMP H ا��ا �1د� و /����; ��ن را &���2 �2E�1د� و ا��ا ذ ���2*A4 ;�&^=�� /#� از ا� v� LORDPE ، 'Rebuild PE'�2/����; �1ر �2& ا��ا !&2� .

Page 48: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤٨

ن ا��ا " د�-� ��2ز$ /; /�ز ��ز$ . ;����/ IAT د �� )����" ;.☺☺☺☺(

�Eف ا�^: W0ا"��; و /#� /�����; را ا���ا 1�2 BPرا '�2ا ��1د� و رو$ ان ��� JMP EAX "*� ه*8�2; /��� ان

ا�� را� � اب ده"�/ �" �' )2� .ا�2وارم در !*��� /����; ه��� 1; /� ��

Mup Mup Mup Mup YodaYodaYodaYoda����s cryptor s cryptor s cryptor s cryptor 1111....xxxx����modifiedmodifiedmodifiedmodified

)��A4: �/// در�; ���7///ا/?اره�///هف/// ���;�� �E}^�ف /// روش///�����///�

;���:

2� رو$ وب ه�( �� �; � ه� /�"; دو�( �ارم /?ارم . ن "�� ا�� ا�0. /����; ا���7/� را !�( �&�دم / )+ ...+3c "&��; اش رو /� ه�ش ^�ل 12 او�

X-attack :هف

:OLLYDBG, IMPREC ا/?اره�> �: $���

��� �:Teerayoot - 28 July 2004 JNOP790 :�و��ا�H �����0 و

:روش

"�; "� /� VBا�� /����; /� ز/�ن �PEID �. �2ا��ا&2�:

Page 49: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٤٩

ب /������; را در ��E OLLY ���� �2 /���ز�� MODULES ���� /��� زدن ALT+E و ^���� /��� زدن 1WINDOW ;1 �اه�2 د E MSVBVM60�/ ز ب .. �8� ا�(0?ار$ ر هE�2� دار��� ��� ز�� BP

.دا3E ا�� �ول ه� /-?ار��

ب /� زدن EF9 0 �� دول ه� را � د �2& و و+��� �د�� MSVBVM60 �" د �� ��� ���BP 3�Eدر دا2��2 ���م ��ول ه�� ���2?��2 !� را CTRL+N...ان �2-?ار�� �/�; ThunRTMain ��� BP و رو$...را / � �2-?ار��\ رت ز�

ب ^�� ه*; .2? در�( " و �&��ر EOLLY �2 را از ر$ ا���رت را �2?��2 ^��� ��� ه*� ن F9 و �2&�2T �1د� / د��! 3� :���� ه���2 1; از +

ان � ���/� "��&3 ز���� (/���و�� STACK را زد� !��� /��; '=���� ALT+K ^���ل ��261 ه���$ ��E�4ا ���� �����22�2�CALLER ( ��3 ز&" �/� �

/22 1; ا�� �� 21 ;� دا/�3 ��261 1�2 !�� ("*� ا��ا ��2�4... ه�( CALLER �� OEP"*� ا�0 ! )/; ا�=� /�و�

).*+CTRL( را ا���7ب �1د� و �� را در ا�=� +�ار �2هvE0040118C�2 ادرس

Page 50: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥٠

"��; "�� ا�� را /�; VB �K��E"*� /�� ه*82; ا�� ا�@� را در ه-�م �1ر /�� /�����; ه���� �1; /�� ز/��ن � DUMP �2/����; را /; \ رت ز�� ./�2ور�&2�:

�� )��A� و در. �/ � IMPREC �" م��*! ��" E و �/ �E ;�/ ��. ;�*�2 �1; ه�� ا�=�م �2ه�2 و ��� /2 .ا�(

Page 51: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥١

�" �4 � �*" � �1ر /� /����; ه�$�� �/ �= :�K�E /�2ور�"� "� '_ ه*82; دو !� .2? را /; } '� "� VB "*� ا�

MSVBVM60و ThunRTMain

PATCHING TASK MANAGERPATCHING TASK MANAGERPATCHING TASK MANAGERPATCHING TASK MANAGER

�task manager vا�� "*� !�/��ل /� ا�� �8&3 رو/�و "� ا� 1; ه�و+( �72 اه2 /����; ! � -/ 2 و�وز را ا��ا 1administrator؟ ��2 4#�ل "j

�21 �� H6^ �� )�2� �6&8�☺☺☺☺�*" ;1 )�$ ���� ه���در ر�2 ا�2 ! �� Taskmg.exe ) �6\�2 4#�ل ) اj �� را 4#�ل2 !ا�� روش �� 'u �1دن ه�(...1

OLLY ;1 ف رارا ا��ا �1د� و /����; هTaskmg.exe�2 system را در ��Taskmg.exe �2( �� /�" در ان /�ز �� 1 ��system32 2/�2/ 2ا� :�� /; ا�� vE ��2و�� . .. 1ه� را �� /22 ALT + C/� زدن ه*?��ن ).��2

010039EB |. FF15 28100001 CALL DWORD PTR DS:[<&ADVAPI32.RegOpenKey>; \RegOpenKeyExW

�; �� ا�� vE را ���2�4 ؟ /� ا�� -.API 1; ا�� ا��ز� /�ز �1دن /����; را *Ac2� $���2ط /� ر��� ^��V�c ا�( 1; /����; /# از ار!

�2E �� ا��2 رو$ ه� ���#� از ا�� �� �*.دارد ! �api )��ا ; �� )bp ( ;2� اه�2 �1د �� .2?$ "E رد E�/ � E �/ ن /-?ار�� . !ان

3 �� 1olly�2در '=�� ا\�6 *U رت : �261 را�( �1د� و /; ا�� \ Goto -> Expression �2 ار�� �� bp ?0 و /# از ر�2ن /; ا�=� �� 010039EBو ا�� ��ار را وارد �� 1

21 ;� ! vE ا�� دو ;/ :ا�� vE از /����; ��ار $ را از ر�2���1 �� �. $

010039F1 |. 85C0 TEST EAX,EAX 010039F3 |. 74 6F JNZ SHORT TASKMGR.01003A64

22....*2ه را .� �� 1 و ه-��� 1; ا�� ��ار \�c /�" '�"� را ا�=�م � ��eaxار /���80 از � :1*� '���2 !� را /

01003A09 |. 68 98160001 PUSH TASKMGR.01001698 ; |ValueName = "DisableTaskMgr" 01003A0E |. FF75 EC PUSH DWORD PTR SS:[EBP-14] ; |hKey 01003A11 |. FF15 2C100001 CALL DWORD PTR DS:[<&ADVAPI32.RegQueryVa>; \RegQueryValueExW

vE 1; در �K�" ان '�ش "�� ب /�ا$ ا�&; ه*82; /����; �1ر 1 و .� �1د�� در �1ر �E010039F3 ;/ را ��د� je ��

jmp �2 و1 �� ��2E�22 �� ده�2 و /����; را ذI!..... !*�م

Introduction in delphi

رت 1 !�� در �� رد .-� �-� /�; ��1ر /��دن /�����; �#��وف +[ دار�� در ا�� �\ ;/ ;���DEDE $ا��/ �2� "��; "�� ا�� }"���� '�2ا 1� ��c�ذ /; /����; ه��� 1; /�� ز/��ن د c�. v�� ا����; ا��� 0 ��; /�����; ه�� !

ذ ه��� و ���2 ان /�ا^��� ا���A ر 4��OLLY( ا�_ و د��� ��0 �#��وف د�-��$ /�; ���م �c� 3�/�+ ���^ا /�ا . ا�=�م �� دهDEDE �2ا�� �� /�ا$ !*��� ا�� �1ر را ! �v !د��&�ر$ �1د

Page 52: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥٢

. ه�( 1; ه*�ا� ا�� ����; ا�� ا�(CRACK MEهف �� �1ر رو$ �� DEDE ورژن ان ���Eر 0?ار$ 3.5را ه� 1; ا�/ �� ه�( ��2 ا�2 از ه� ���� دا3E وب دا�6 د �� /; +

21....

:"�وع �����DEDE ���1 را /����ز ;��� را زد� و /�������; ���� رد �����T را '���2ا ����1د� و �����_ ���261 �OPENد� و 0?�

PROCESS د ا�� ا���ا /��ز 1� ��� . را �84ر �2ه�2 !� �1ر "�وع "! ��*� �� -2� ;�1 ����I2' د /� و� ل ���1د� و ادا���; ���2ه�2،ا��ا /���ز �2&�� و /��; ادا���; ���1ر '�����ن �2ه��، در ������� /��; +���*( DEDE ا����ا +

PROCEDURESد اه /E ;� : ر�4; و ا�� 0

�� د���ل د1*; ر�2��� �2-��د�� '�_ /��ا$ '�2ا . �Vه� �82 د) buttons( �; دUNIT 1 ;*1در +�*( ; را ا���7ب �� �1SHOW ADITTIONAL DATAدن رو$ ه� �� از ا��A �261 را�( �1د� و 0?�

:در ��A�( در د1; "*�ر� �� �� ا��ا ��2/�2...�*���2

;1 �2 ...ه�( REGISTERان /�ا/� /� ��CAPTION ��8ه� �� 1 ;� را ا����7ب ��� 1��2 �1; در �disassemble )���A^�ل �� دو/�ر� /� رو$ ان �261 را�( �1د� و 0?�

�22� :ا�� را �20042E1DC E867FEFFFF call 0042E048 0042E1E1 C3 ret

����� و�� د دارد �1; /�����; /�; ا�=�� ���2ود ��� /�; را �8�4ر ��2هREGISTER BUTTON �2و+��� ���

ب /�ا$ د�ن ا�� ��3 /� رو$ ���4ن )�2��د(+ �� '�ش �2&E ،CALL )*��+ �2��261 ��1د� !�� دو�� �22� :را /

* Reference to : THintWindow._PROC_00419F08()

Page 53: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥٣

|

0042E09F E864BEFEFF call 00419F08

0042E0A4 8D45F8 lea eax, [ebp-$08]

* Possible String Reference to: 'iamnotalooser'

|

0042E0A7 BA3CE14200 mov edx, $0042E13C

* Reference to: System.Proc_004035DC

|

0042E0AC E82B55FDFF call 004035DC

0042E0B1 8B45FC mov eax, [ebp-$04]

0042E0B4 8B55F8 mov edx, [ebp-$08]

* Reference to: System.Proc_004038D0

|

0042E0B7 E81458FDFF call 004038D0

0042E0BC 7512 jnz 0042E0D0

* Possible String Reference to: 'Congratulations, you did it! Now ma

il me your solution!'

|

0042E0BE BA54E14200 mov edx, $0042E154

* Reference to control TForm1.Edit2 : TEdit

|

0042E0C3 8B83E0010000 mov eax, [ebx+$01E0]

* Reference to : THintWindow._PROC_00419F38()

|

0042E0C9 E86ABEFEFF call 00419F38

0042E0CE EB34 jmp 0042E104

• Possible String Reference to: 'Too bad!'

����� ا�� � ر ���� �� ،���� ه ��� ��� ���� !�� �� OLLYا�� �� SICE را"� ه�� ا�

د STRINGS REFERENCES&�%ه �� ه�� �$ در � ���+� ه�� ..در�*$ .. د��) '� APIو� ��� و /�ا. ه��� ا-� � �' (�� $*� �� ر /�ود �$ /�ا. �� $/ �� را /$ � ر DEDE در ا�� �ارد ه

���0 �اه� � ���� ر /�ا. �� !���'!!! ���� �$ ا-� �� ر�2�*�. � /�ا/� /�� ��iamnotalooser �� �ا� ��$ را) هرو / %�& $��� ه /

�� �� ا�! ه� !/�ا. �

Congratulations, you did it! Now mail me your solution"" � ا4�*$ ا�� /�'/ �� �� �� د) /د و ��� /�ا. 5� $DEDE $*� �*� از 5ن دا�� � �� $*�' $4 ا�� �8

��� /

Page 54: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥٤

HOW TO WRITE A LOADERHOW TO WRITE A LOADERHOW TO WRITE A LOADERHOW TO WRITE A LOADER

�2�� / �A2( ا��و ادا�; 4#� ;T4�^ در �A�22 دادن ا�I! در '��; /�ا$ �-; دا"�� '�و�; ه� و � �� ;� -..

�Lم

ا/?اره�

3Y� �6� masm 7.0ا�* ه�( crack meف 1; در ا�=� �� ه

apiدا���� ��� دا���� ز/�ن /����; �

;���

در �� /����; ��د� و !�A /�ا$ ا��ا �1دن �� /����; د�-� ه�( ا���; و+�� �� � در را /; �1ر �� � 1 u' ;T4�^ �1دن را ا�=�م داد�� و �4�3 ا\�6 /����; را در u' �1ر �� ;T4�^ د /��� در ا\3 در E ;� ��د�

� ه� /�ا$ /�ز$ ه� 1; ��72هLY� �2 �� �4د در /�ز$ ه*82; � �H '� /�" �� !*�م ./����; را��! z� ...��A^Lرادر ا�2�Eر دا"�; /�"; و

را .� �1د �� crcد�32 ا�� ه� 1; �� از � در ا���cد� �� 1� /��; /; "�ا�v دار� �LY و+�� /����; LY� �� ��/�22ا!� راI! ;����/ �6\ا $�A���/ ;1 �2ن /����; /�7هد " و+�� !�22Iا!� را ا�=�م داد�� /# از �

ووووو را /; ^��( اول /��0دو��2

در .- �; �1ر �2&؟�

در �� '�و�; �2��ز� و /����; هف را ا��ا �2&; ، �� از �api �2 رو/�و /�ا$ ا�� �1ر ا���cد� �2&CreateProcess;& د " ��72ه�2 ا��ا �-; دار�� و !�22Iات راا�=�م /ه�2 /# ازا�� ;��� �/

رت ز�� ه�(apiا�� \ ;/ ��/ : BOOL CreateProcess(

LPCTSTR lpApplicationName, // pointer to name of

executable module

LPTSTR lpCommandLine, // pointer to command line string

LPSECURITY_ATTRIBUTES lpProcessAttributes, // pointer to process

security attributes

LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread

security attributes

BOOL bInheritHandles, // handle inheritance flag

DWORD dwCreationFlags, // creation flags

LPVOID lpEnvironment, // pointer to new environment

block

LPCTSTR lpCurrentDirectory, // pointer to current

directory name

LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO

LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION

);

)��A :.2?ه��� 1; /�ا$ �� ��A ه�( ا�

lpApplicationName LY� ;4رد ه ]c:target.exe:[ 1; ���2 و ا�� /����; �lpCommandLine��/ ن /; �1ر �2 �; /�ا$ ا4�B; �1دن '�را���ه�$ vE ���4ن /; ه4*� dwCreationFlags�A� �62E �� $ا�� /�ا ;-� ه�( . �&; ��72ه�2 !� /����; � د " �� او�

را در ا�=� /; �1ر �2����CREATE_SUSPENDEDدار�� !� �1ر$ 1; ��72ه�2 ا�=�م /�� ��

Page 55: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥٥

lpStartupInfo . /; ����Eر$ /� ا�ULKت او�2; /�ا$ "�وع ا"�ر� �2&lpProcessInformation#/ ;1 از � د "ن /����; در ^���E�� ;/ ;T4ر !�A و �E�� ا"�ر� �2&

82 د ا�� ����Eر "��3 د��-��2 '�و�; ،د��-��2 ر"�; ه�� �' )thread ( وprocess/thread ID ;� !:

�����?�( د��-��2 '�و�; ه� /; د��-��2 !�� ه� ا�� ه�( 1; و+�� �� �� د��-��2 '�و�; را /&�ر �2 ا�ن و� "�� در ��ا�� '�و�; E ;/ �2ا� د����� دا"�; /�"�2 1; در � رد د�-�$ /�� �� +�/�2� �� )26

�2 )PROCESS_ALL_ACCESS. (د����� را /; \ رت د��� 4#�ل 21 د "� ا�( و �� /; را^�� ��2 ا��2 ا��ا ا��ا �� �-; دار�� /� ا�� � ;����/ ��^api:

DWORD ResumeThread(

HANDLE hThread // identifies thread to restart

);

ا�� /�ا$ ا��ا ا�� ه� /�ا$ �-; دا"��

DWORD SuspendThread( HANDLE hThread // handle to the thread ) ;

hThread ر��E�� در ;� �2� LPPROCESS_INFORMATION;8/ ا2' . ا�ن و � "�� را ا�=�م ده�2 /� ا�� E 3*U �2ا� �2� �� )��A� درapi:

BOOL WriteProcessMemory(

HANDLE hProcess, // handle to process whose memory is written

to

LPVOID lpBaseAddress, // address to start writing to

LPVOID lpBuffer, // pointer to buffer to write data to

DWORD nSize, // number of bytes to write

LPDWORD lpNumberOfBytesWritten // actual number of bytes written );

ه�( LPPROCESS_INFORMATION از ����Eر hProcessد��-��2 ا�ن ه� E $ا�/:

BOOL ReadProcessMemory(

HANDLE hProcess, // handle of the process whose memory is read

LPCVOID lpBaseAddress, // address to start reading

LPVOID lpBuffer, // address of buffer to place read data

DWORD nSize, // number of bytes to read

LPDWORD lpNumberOfBytesRead // address of number of bytes

read

) ;

;"�/ �4�1 �1 �&4 ��E�� $ا�/.

در � ��:

ان /����; را !�22I �2ه�2U �2 و در ز�� �� �� هف را /�ز �2&٥�2ا /; �ت ا�� U*3 ر&5 �2+ �� در ا�=� �� 'u ��د� ر"�; ا$ . ���2; ا�=�م �2ه�2 و ��_ ا��ا ��

ان در U ;�"ادرس ���� 1; ر ;/ �� ��E�� ( /�ا$ ا��د��رت ه دار�� در � ارد د�-� ه� /; ه*�2 \در � رد /����; ا��ا /disassembler ;1 �2/�2/����; +�ار �2-�2د را /�� دا"�; /�"�2 1; �82; /� ��

٠٠٤٠٥٠: �� �82 دFCh

.٣٨٦

Page 56: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥٦

.model flat,stdcall option casemap:none

include \masm32\include\windows.inc

include \masm32\include\user32.inc

include \masm32\includekernel32.inc

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

.data FileName db "C:\somedircrackme.exe",0

notloaded db "It did not work :-(",0

Letsgo db "The process is started",13,10, " Let's change smthg and run it now :-)",0 NewText db "Dettens Caption",0

Startup STARTUPINFO<> processinfo PROCESS_INFORMATION<>

.data? hInstance HINSTANCE? byteswritten dd? uExitCode dd?

.code start:

invoke GetModuleHandleA, NULL

mov hInstance,eax

;Create a process and load the crackme in it, and ;immediatly suspend the thread (pause it) invoke CreateProcess, ADDR FileName, NULL, NULL, NULL, NULL,

CREATE_SUSPENDED, NULL, NULL, ADDR Startup, ADDR processinfo .IF eax == NULL ; Creation of new process failed? invoke MessageBox, NULL, ADDR notloaded, NULL,

MB_ICONEXCLAMATION

.ELSE invoke MessageBox, NULL, ADDR Letsgo, NULL, MB_OK ;

Display Message

; I will change the text string in the crackme used in ; the captionbar (004050FCh) invoke WriteProcessMemory, processinfo.hProcess, 004050FCh, ADDR NewText, ١٣ , byteswritten

; Let the process run happily; )

invoke ResumeThread, processinfo.hThread ; Let the process run for 5 sec. and then terminate it invoke Sleep, 5000 invoke TerminateProcess, processinfo.hProcess, uExitCode

.ENDIF invoke ExitProcess,eax

�س��در�� ��س �: د ر �

Page 57: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥٧

char lpApp[16] = "crackme.exe ";

char lpNew[10] = "KiTo r0x "!;

char lpWritten; unsigned long lAdress = 0x004050FC; STARTUPINFO si; PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si)); ZeroMemory(&pi, sizeof(pi)); si.cb = sizeof(si);

bool hResult = CreateProcess(lpApp, NULL, NULL, NULL, NULL,

CREATE_SUSPENDED, NULL, NULL, &si, &pi); if(hResult == NULL)

} SetDlgItemText(hwnd, IDC_STATUS, "Couldn't create the

process, aborting "...(;

DWORD bajs = GetLastError )(;

{ else

}

hResult = WriteProcessMemory(pi.hProcess, &lAdress, lpNew, 12,

NULL); if(hResult == NULL)

} SetDlgItemText(hwnd, IDC_STATUS, "Couldn't write to

memory, aborting "...(;

{ else

}

ResumeThread(pi.hThread); Sleep(5000); TerminateProcess(pi.hProcess, 0);

}}

Page 58: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥٨

ا$ '�و�; ه� �� ا�ن و !�22Iات �E 32� در ��2 ان �1ره��� از +� ��" در !&�2 ه�$ '�4�82; /�ا$ � .�=�م دادا... و )!*�م ر�2��� ه� و '�.� ه� (

mup telock mup telock mup telock mup telock 0.980.980.980.98

> �:$��� Ollydbg, PEID ,Import Reconstructor :ا/?اره�

12�'2: د / دن TELockا��� �1دن � � �K�E ;/ ( ا���از /�2; '&� ه� ���7 ه plugins ;62� ه��� 1; /

.(/�2; �1�1ه� ا�=�د "� ا� �1ر ا��ن "� ا� ص ]7� �A1; �&� از ا�ImpRec �2�� 1; در plugin; ... ان +�ار دارد�ا$ ادا�; ا�� ����/ ��A/ _'

21 ;2A! ا��ا. �2 ا�2 در ا�=� � ��i د�-�$ را در � رد /����; ( � �*"TELOCK ا��ا i��#� و �?ا�� و 21 ;4�Bا

2�� /(

�وع�: :�ار �2-���/�ز �1د� و �� در ا�=� + ollyهف را در

;�/ ;2�� دار ه�( ا�� "�Epex )��2� ر �K ���( ا�رت �1; ..ه� ب ��� ه�� /�; ه*��ن \��Epex 0.99 �2ا�&2� ���� �1د�� ا��ا ه� ا�.

اه�2 د� pushad/ا3E ر�4; و �� f7/� زدن E... �� )+1; ه� و ا�2ا /�د�� pushadه*82; ا� ا�� popad/; د���ل �� E ;1 �6� !/�"2 در ����ت +

�2 !!!ا�� �� ا�=� ا�� �1ر را �*� 1

Page 59: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٥٩

:!�ز� �1ره�

�/ �! �2ا!��cق ��� popad /#� از ���exceptions; را ا��ا 1��U ��� �2�*�; .�ا ؟ز��ا اL! �� �0ش 1و+��� pex+��ار /�ه�2 /�� �4��� ه��(، درا���� ��1دن popadدر رو$ bp ا��4 /��/�ا�� ا��� �1; ��� ^�3 ��� "� ا��� در ا�=�� Shift+F9ا!��cق ��� ا���4د �1; /�� زدن exception/����; را ا��ا �� ��1د��

ا!�cق �� ا�4 ا\L ���2ز$ /�; !���_ ��1دن kexceptions ا����� ه�( و+�� 1; �4ق �2&; ا�� در وا+ .�2�bp )و

;1 �2 ب /����; را ا��ا �1د� و �� /2Eexception /� زدن ق �� ا�4�c!ا Shift+F9 ا��ا رد �1د� و ��3 از ا���ا /��ر ١٨ ه� را �� "*�ر�� !� ز���2&�; /�����; ا���ا "� د در ا��� �* ��; exception !#اد+

exception ق ا��4د�c!ا . . ه� �*&� ا�( �4ق /& pcا���; در /#@� ..ا��ا در �� �� �� � ���2 !� ��د��ن ��ود

����E/�; ا �ا���ا ��1د� و ه*��ن �1ره�� را !�� �&�� ���� ب /�����; را دو/��ر� از ��Eexception ا�=��م �2ه�2

� ا0; ( #��2 ١٨�cاز رد �1دن ه د /# / �! exception .( ;�6^�� ���ب ^��� در ا �EALT + M را �22� : �84ر داد� !� ��T4�^ ;8; را /

Page 60: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦٠

رت ز�� در او��2 �&�8 +�ار �� ده&" ; ��(�2�bp ))^�ل �� \ ;/)..text(

;2��U !و ���; را �� /c\ ��ب ا E SHIFT + F9 د اه�2 /E �= : را �2?��2 ��در ا�

2oep �� �2ا�� � ه�( ا�� +�*( را ا���2? �� 1�2 !� 1ه�$ ا\�6 را /CTRL + A. از #/dump �/ �1دن �4�3 ا��اImpRec�2��*� �� $*( ��7( !���� ... /�ز ��ز�ا��� +�

.ه� ا����� ه�( upx /�ا$ ان ا�� �1ر از ا��� �1دن plugins( ه�( ا�� /� و� د +�*

Page 61: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦١

Mup All ver. Of Nspack 2.x - 3.x

�Lم ب E �&' د از � ��ر �72 اه�2 /; ا��� د��� !*�م ورژن ه�$ � !ورژن �� ا�� /����; را '2ا �&�دم . /��داز�� nspackا�

ه ا��ار

Ollydbg ollydump

Peid Lordpe Imprec

�����

:�� �-�ه� /; !�ر�S7; ا�� '&�/��2از��

V3.7 Modify the error caused by unsuitable section attribute.

V3.6 Fixed the bug of the compressed 64-bit executables that don't

work.

V3.5 Fix minor bugs of processed section table, strengthen

compatibility of compressed resource.

V3.4 Fixed Minor resource error and improved recompressing the

program compressed by commonly-used software.

V3.3 It resolved the compressing error under 9x, amended the

compressing of .NET, and supports the latest (.NET Framework SDK

v2.0).

V3.2 Fix compatible problems of 3.1and Slim exe depacker about 8

bytes.

V3.1 Fix AVP and NORTON32 virus detecting bug.

V3.0 Fix rebuilding import table bug.

V2.9 maximum compression to reserve the resource "manifest".

V2.8 Fixed Minor resource error and improved recompressing the

program compressed by commonly-used software.

V2.7 Update compression engine and Minor changes.

V2.6 Adding compatibility compression function.

V2.5 Modified the display problem of interface TAB attribute page.

V2.4 Perfected the compression function of Resource-Only DLL

V2.3 Modified the mistake of compression failure in v2.2.

V2.2 Modified resource error of application programs compiled by gcc

under Windows environment.

V2.1 Modified bugs and added process bar display during right click

compression.

V2.0 Nspack released.

V1.4 Fix the button status , when the program failed to compress

one file,Fix for dealing PE file which entry at PE head.

V1.3 Fix for dealing shared section and reserved resource.

Add two new function:

1,run the program after it installed.

2,minimu the produced section.

notice:

when Macafe anti-virus program scan a compressed PE program its entry

is at last section, it will report “new win32 virus”.

V1.2 Fix for compress resource method and clean up English errors.

V1.1 Fix for change language.

Page 62: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦٢

'&� �#�وف ا�=�م "� ��2=; اش /; \ رت ز�� ه�(. �/ ;1 ���!:

Test files Version Unpacked

size

PECompact

(2.62a)

Aspack

(2.12)

Upx

(1.93beta)

Nspack

(3.7)

AcroRd32.exe 6.0 7,663,683 2,512,384 2,933,760 2,840,576 2,444,144

Dreamweaver.exe 7.0 11,886,592 3,317,760 3,764,736 3,916,800 3,293,251

Foxmail.exe 5.0 3,273,216 1,196,032 1,606,144 1,338,368 1,149,657

WinRAR.exe 3.42 823,296 355,328 385,536 384,000 334,504

windbg.exe(64Bit) 6.4.7.2 464,896 Don't

support

Don't

support

Don't

support 135,069

explorer.exe(64Bit) 6.0.3790.1218 1,269,248 Don't

support

Don't

support

Don't

support 375,158

PackMe.exe(.Net) 1.0.1673.8197 606,208 Don't

support

Don't

support

Don't

support 50,578

ب /��� ��اغ �1ر� ن E☺☺☺☺

: د�� �82 د �� ���X اول �1ر و� د دارد و در ه*�ن �� ��2 ان ا�� �*6; را د�٣s٧در ورژن ه�$ +�*� !� از Packed by nspack! ;1 �22I! ;� ب ا�� �*6; ه� ��2E !�4ق �61 1; در ا�� ورژن ه� L1 ٣ ( ا��s٧ ;2�/ �/ ( ��د

. '�ش ه�(�� �82 د Y�3�1 ����� د! ن �2و�2 1; /� �� /����; "E ;82*3 ( هY�PEID( �2��2� ���2 1; ا�� /����; ا2�/ �2 و �� .&� �2&

����� ه�$ �&� از ..... '� "� �� �; و ا�0 '� "� /� .; /����; ا$ ا�� /; ا�� /����; ه� �*82 د ز��د ا�U*�د$ دا"( " �v �4د$ nspack ;1ورژن ه�$ +�� ! ;� /����; اش را /� ا�� �72 اه ه* ن �*6; �#�وH4 ه�( ا�� �*6; ه� ��2

رت اول �� ���X �*���ن �82 د /# ا�� � "�; د�� �82 د \ �A/ ا�� ا�� ( '&� ���T4( �� در ا\3 �84د� 1 !�22I '2ا 1 ������A /�ا$ ه�( 1ا�� ! ر$�� "! ;���"{" ;�c0 .(

� ا�� +�/26( و� د دارد 1; ا��� �&���22I! �8 '�2ا 2��� دا"( . ن در /����; ا\1 �' �6*K82; ا*� L\ا�� �&�8 ه� ا ;/1.

;� ;�/ ;"�/ ;� �2� �Aوع او��" �-� ؟! /� ا�� ^�ل /��A�� !=�/; د�ن '&� ه�$ ز��د و د�ن 1ه�$ او��A و .-

$�A2!*�م ورژ�.X �� زدن �Aو ا� 6; ز��د !� دار�^�� �� F7 )�ه ! 12 1; /# از /�ز �1دن هف در ;� : ��8ه� �2&U ;/OLLY �2&_ ز�� !

Page 63: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦٣

ب /# از زدن ��E F7 �2��ه �= : در ا�

$�A( 1; در ورژ��ن ���� ه . /; /# د�� �82 د٣ا�� ه*

ن �61 ه*82; �0 روش �1ر �� ا�=� ه*ESP )�ه ☺☺☺☺ �; !F8 �22I/# از �� �� �� ESP اغ ان ر�4; و�� ;/ �� .....:در '=�� ر�2��� ه� �82

;� /�; +��*( دا��X ر��4; و ا��� U*��26ت را :/� �261 را�( در رو$ ا��� ر��2��� و ا����7ب ا��� 0?� :ا�=�م �2ه�2

ا F9^�ل �&��ر E �= :ه�2 / درا زد� و �� در ا�

ب ^�ل /�زدن �� /�ر EF7 در OEPد اه�2 /E :

Page 64: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦٤

+k }���2? 1 ه�( /� �261 را�( در رو$ ا�� 1ه� و ا���7ب ا�� ���2� ��^:

اه "E 3&" ��ا ;/:

ا���2 ��2 ا��2 /����; رما�� �1ر را ا�=� OLLYDUMP^�ل � +k دا�X �1دن ر�2� /� E �0ا �Eه�2 و در ا2� ا از � ا���2 ��2 ا�LORDPE �/ �2/�ز��ز$ 1�2 از E �0�2 و ا .!!!�1ر 1IMPREC �2 ا���cد� 1

�; �261 را�( �1د� و /; \ رت ز�� U*3 �� �*���2دc\ ر:

Page 65: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦٥

MUP SPlayer MUP SPlayer MUP SPlayer MUP SPlayer 0.080.080.080.08

0.93PEiD :هف

PEiD 0.93, OllyDbg 1.10 :ا/?اره� > � :v� ��

��� �: de.lycos@MoDHacker H�و و��ا ;*��! :JNOP790

:"�وع

�2 د هف .� �� 1E �/ ;82*3 هY� ا �4�3 راا/�!!!!.

:ا��� �1دن

ب /����; را در Eolly�2ده �� )�Y� اب � � E $م ه��I2' �2 و د �� 1�

Page 66: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦٦

:ا�=� +�ار �� �20���� در

د� ن ادا�; �� ده�2 !� /; ا�� '�ش /��f8 �2^�ل /�زدن E را� ;/: JMP 00425 درFF8

;/ �= . 2-�دا� /� �00425FF5 1; �� را /; /� �72 ر����exception در ا� Oep ��00425 درFDA)ا� ��22 داد� "I! .

ا��2 �! �� �� ��^fadd ���در ا ;�&��3 از ا�+ �2�2��1; ز���د �4+�� ... /� د� exception �2�4��2/ leaرا / ب �� در �� ه*�2S ���� ه���2..�ار�E:

�>�ت . /�ر ا!�cق �� ا�4Yب ا�� ا�� E) درPc ، ) /�ر {١"*� �*&; �4ق 1 /�ر . �*" ��^f8 �-�!� �� /�ر د را �2?�2 exception و "*� /; ا�� ���4ن ق /�4�2�c!اJMP" at 00425FF82��/ ن /; ان /� زدناز ر�2 #/ f72��2� �= : /; ا�

: و ا�� �1ر را ا�=�م �� دهjmp 00425FCC�2و+�� "*� ب ا�=� ر�2� �261 را�( �1د� درAnalysis --> Remove Analysis from module

اه2 د�E �2 ���� "*� ا�� را :در�( در .

Page 67: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦٧

��� ....در }���2? ا�� 1 ه� / د� 1; �� �*� ! ا����2 در ا�� 1ه� ���= �1د� ollyا�� /; �K�E ا"� ادا�; داد� و /; ا�=� �� ر�f8�2^�� /� زدن =��� ;/ RETN at 00425FD9

00425 /� �72 ر�� 1; �� را /; ,00425FD6 �� ;/ exceptionدو/�ر� در ا�� FD32-�دا�� �/

��ر ا�� ب ^�� .� �1ر �� 1�2؟exceptions xxxx,ا�E د /�ر ا�=�م �82 د� ن را /; E �� vE00425FD6 ���4ن vE ر����2 و ا�� ���4ن را در �� olly �2 !� از1 �� X��!

�E :G EIP + 1رج " �� exceptionا��

اه�2 / دE �= :�3 در ا�

: را زد� و /; ا�=� ���Shift + F8�2��2 �1ر$ �*� ! ا��2 ا�=�م ده�2 /�ا$ ه*f8 �2/� زدن

ب /� زدن Ef8 �2��/ �= 0047964F در JMP ^�1( �1د� !� /; ا�

Page 68: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦٨

;/ ��oep ��ا ��62 �?د�� "E...f7�2��/ را زد� !� /; ان :

.ه����oep �2 ^�� در اول

"OEP( 00455F1E )"/����; را دا�X �1د�

ب ^�� و+( /�ز��ز$ ه�(E. ;����/peid را درImpRec 00" /�ز �1د� وC55F13" را در )*�+oep #/ ;�" �IAT

AutoSearch #/ را زد� و Get Imports �Eو در ا Fix Dump...

Page 69: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٦٩

;1 �22/ �� �2 ب ا0; /����; را ^�� '� 1E:

;6/

"�; "� ا�(++ ا�� /� و��ال �� �!

Page 70: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧٠

MUP MUP MUP MUP DLL ARMADILLO DLL ARMADILLO DLL ARMADILLO DLL ARMADILLO 2.512.512.512.51----3333....XX XX XX XX ����

:ا�ULKت او�2; �&' :Armadillo 4.xx IAT Elimination, Strategic Code Splicing, Custom Build TrueLaunchBar 3.2.12 Beta :هف

OllyDbg 1.10, HideOD, LordPE, CFF Explorer, ArmInline and ImpREC :ا/?اره���7� :� ١٠ از

�� ه�ف� ��:

Peid ���2 ا'�<٩>٠ورژن ن � د��ه . ���2 رارا ��*� $? ت ��/�AB� / .�C�0D ده�

!�E��exception :ه

�� ن /��G از ��وع /�ا. د�*� /� /�*� /$ ه�� Exceptions را در olly رت ز��A $/ !��� !�E��

Page 71: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧١

:H+��Import Redirection ��دن

��وع � ه�� $I8' ا��. ب ،او��4 � ر � ا� ن ه�� &ن �dll . �K*در ا� � !�' � �� �E*�� د) و�ا ��را ا2

"Privileged Instruction"�*�� / . L� د . �� -%ار�!api ، VirtualProtectرو. bpو *�+$ ا��*

زدن ���� ا�2ا �/)Shift+F9) و زدن (CTRL+F9د�!(�- �� �/ /$ �� ار� د��

Page 72: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧٢

ه�*�! �D-�/api از ان � /�M از Nا��. ل ��ا�ا'� /�ا. �'�/ � P "Import Redirection د �در� ر �� -�د�!،/� /�ا�� �

patchpoint !���- �� ار� . CTRL+F (�N�Q ر داد) �D� را Find Commandل �'�/ HR� و �� �/ P /

PUSH 100 !د��- ��. H� / L& (�N�Q در ا��"Entire Block"���� ن دار D' را !

ل ان �� -�د�! � /$ ��ا�ا'� �����! �$ ��ا���ه . ���S� �2� را ...." ل /$ د'��8*�� � م ���ه�N'ا)redirection.(!��� �2ا $� �B دار�! ا���ا از /�'�.

/�ا. ��+H ��دن ���Import Redirection ���� م ده�! �N'ز�� را ا ���S�: PUSH EBP --> RETN

���ن ا��+$ در�� در &$ ��M/ �MW از ��� ن ��PUSH 100 ن م /���د ا�N'ر ا ا�� �رت . ه�� A $/ ن ��� L�MOV DWORD, D4F913BB ��ه .

Page 73: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧٣

!oep ��اغ /��! ��Aوع ا�� $I8' ا ��دن��Q

ر ا� ن ه�� ��/ $I8' �دن ا��ا ���Q. !ه��$ ��ادا�)Shift+F9 ( ر) در و � دو/

VirtualProtect !�*�ا� �� . ل �"bp (د�ف �Y" !د�/ $*�و /$ �� ) f2( را �$ -Yا CTRL+F9.( L� P(ار� د�� /� ����د�! "bp � �� Q �/ رت ز��A $/ !�� ) �در ز�

pe header �� و �text (Memory Breakpoint on Access HR. و در � . (Shift+F9)ا'�اا�2ا ��+��!

اه�! /د و � Nدر ا�� �bp !��+�� ب JMPرا "Yف ��د) و ا�� �� ��� ن را ا'*0(0099D87F) ���� و f4 !���/ �� .را زد) � /$ ا�� �

L� (ر �ار داد) و ا'�ا text. در ��� Memory Breakpoint on Accessدو/اه�! /د oepو � در ...ا�2ا �� ���!�.

:H+��Import Elimination ��دن

Import Elimination ، iat $� '�/ $E� ص دادن " �E$ ا. در � رج از "B*ا� را / �$ را از " �E$ .دو/ ر) ��*�8 ��+��'�/ /�ا�� ا-� ��/dump !���iat �اهه��ا) ان '0

د/.

د. )Check out( ��ا�ا'� را / زر�� ��+��! ا��D�� (د�� $E� " $D8' N�� اP ".

Page 74: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧٤

از <٠_٣[٩ �ب ،/� /�ا�� ادرس� $N�*' در، ���' $� ر. /�'2 $E� " G� �

Arminline دن�� �ا��ر��/ iat �� (د ص ده�! ا�*`B*اه�! ا�0�� � $+�� در 2!�� �' .

��وع $I8' � $�ل ان را �Q�ا �� ���! iatاول از ه? ���a� �$ در call/� رو. . و هد ���L را�� ��د) D�� (د�� P / H+b )از در ��P / ��oep !�� د ا'�ا �� � /�� ،ز�

�c2�� L /�ا. ان ��� $� ن /� ر �� /��� ��Qا ���� api'��� �$ ا�� ه� $/ �� $�(. P ادرس را در "dump اول $/ P /�و�� �/ �� ل ���� و /$ �� : /����iatد'

view Address the get to ,Address >-- Long >-- Rightclick

��وع iat:00953000

� ���� ���" ��� Q ��� c/و ا�� ا�� �2ول ٠٠٠٠٠٠٠٠ �����اه� /د iat را /�

iatا'*� . �2ول

ل ?iat دD�� !ه:

0095374C-00953000 = 74C

P ب "� Arminlineت �B دو/ ر) ��*�8 . را Q� �� ���! را ا2�ا ��د) و ��%2� .١٠١٨٧٠٠٠ دار�!adata.را در/��iat d0دن

Page 75: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧٥

IAT Elimination �� م N'ا .

:H+��Code Splicing ��دن

/M� از ا��+$ *��' ر Code Splicing را ا�*` د) ��د�! /�ا. ArmInlineار� د��� د D�� ن ص �Q�ا ٢٠٠٠٠اh�i /�ا. ��ه �� �$ �2ا ��) ا'� " �E$ ا. /�ا/� / . ا�B*ا�

ا'�! ا'�ا در *�� /�ا�� /�ا"*� ��/ ��+��Memory Map (ALT+M)!��� ل � . د'

$� ����/ �� �� ���a� ص داد) ��) ه�� E50000هB*ا� $E� " . ��!ArmInlineداد) ه را در �' �� H+�� وارد ��د) و ا'�ا .

Code Splicing�� م N'ا .

Page 76: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧٦

���$ dllدا�k ��دن / lordpe

ب ز� ن دا�k ��ا ر���) �LoadDLL.exe ل � . ه �� -�د�!dll را ��Qا ��د) و /�'

$� ���� $2�ImageBase ارد�' �G ه . ا�*� $��� pe ���'. Imagebase �در� . (10000000) را /$ � ر �� /��� ا�*` د) ����ImpRECرا و *�+$

ر � �G ا'�ا دا�k ���� و /�ا. در�� ��دن ? $/iat ازImpREC!��� �� (د . ا�*`

:ImpREC در H+��iat ��دن

LoadDLL.exe .0 ب ��د) و �HR ا'ImpREC را در ��*Pick DLL!�'%�� را

ور�� �/ �? � $/OEP (100AB57A), P د ، "/ ImageBase! و را از ا�! ��+�ن � ��اه�! دا�AB57A ان�b $/ ا���ا oep وارد ��د) و...

Page 77: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧٧

�B دار�! ��rva .را /�اiat ،!��� ر /� $/ ���2 �D+� L� $+ا�� . ����S /�ه�! /$ 2 /�ا�� �� ا�� را /$ � ر �� /�م�/:

the previous Import section: 10197000

ب � �G را در �dump ��� dump (د��... (�'ب �� (�� م N'ا �& $� ه�و ���8

�� هN/ ).H+��)relocations ��دن 2

:CFF Explorer III در H+��Relocations ��دن

?� ا��+$ � $/relocations ،�ا� (���د &ن ا'� /$ را '0اه� �Q�ا � dll،iat ��اب ر��+$ A در �'D�� .ر -%ار / $E� رت د�� ��L در "Aiat (�'� L�� QH ...ه�ز ا�*

./�%ار�� ا'�ا در�� ���!P�M� .reloc1��� Q�/ ز. را . /�ا. ا�� � ر /$ � ر ���ود � �2ول / ز�

�B دار�! � ا'�ا /$ و���$ �.reloc!م ده� N'ا .

Page 78: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧٨

.و ا'�ا ذ���) �� ���!

Mup Mup Mup Mup AntiCrack Protector v1.41

)��A4: �////� <///ا/?ار ه�///هف�� روش///�����///�

��" )T4� "�/Acprotector v1.41 ه� /����; ا$ 1; /� :هف � . html.downloads/protector/com.siskinsoft.www://http :ادرس '�و!&� ر

ازم �1ر�: Olly, IMPrec with ACprotect pluginH&.و �2~ و ��7� :;��/ Hا���� و دا� q-:"*� !� ^�� دار� ) اLKع ( /; ! د: ����� � )cپ ه � ١-٢-���٢٠٠�

�Lم

72 اه�ا��وز � �� د�1ر '=�� �� ANTI CRACK PROTECTOR در � رد ا�E فW^ �2S*و ه 1TRIAL�2در /����; ه�$ ) �?ا^�! (�� )��\ .

'� "� �� ACPROT. 1.41 2ا��2 1; /����; /� از +�3Y� )� 3 ه*82; /�ز �1د� OLLY/����; را در �2�E�� را �A د� ن �&� از ا�E(.

Page 79: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٧٩

./# از ا��ا د�� �82 د) NAG(ا�� '=�� �?ا^� ب �� رو$ EAPI �� i��� BP ;در ) �� /����; "*�( �2-?ار�� 1; �*&; در �2��� "*� �4ق 1�2 ن1; /�ز GetModuleHandleAا�=� �� رو$ � ;����/ ;/ ;��/API ، GetVersion;"�/ ه�.

را �2?��2 و f9 ��2��� �� �1ر �E\� ا�=�م �*� د�� /6&; !olly �A /�ر ٢ داد�� ار�را + Bpو+�� �� ا��

�Eرو$ در ا �/ OK �2 :و در ��A�( �� ا�=� ه���2.....'=�� �?ا^� 1 �� �261

ب ��ا^3 را /; ا�� \ رت E �2ا�=�م �� ده: =�� ALT+K /� زدن ' STAK WINDOW �2 .را �*���ن �� 1

�_ �261 را�( �1د� و � SHOW CALL �2� /�; ��*( CPUو /#� �&�� در '=��� .را ا���7ب �� 1 ).push 70( ه��oep�2/�� ^�1( �1د� و �� در

Page 80: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨٠

ب در +�*( Epush 70 و ا���7بnew origin here) �621 را�( درpush 70 ( �/ را ;����/ ollydump ون ا���7ب/rebuild option ;����/ ;/ _� ر�4; و /����; imprec دا�X �1د� و �

fix �2را /; \ رت ز�� &2�....

ب در U&_ ز�� �� Ethunks �20L' �/ را �Aرا ا���7ب �1د� و ا� ������; را � / acprotectه�$ ا"�fix �1د� و.....

Page 81: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨١

MUP WITH SCRIPTMUP WITH SCRIPTMUP WITH SCRIPTMUP WITH SCRIPT

Asprotect Asprotect Asprotect Asprotect 2222 Ske Ske Ske Ske

)��A4: �////� <///ا/?ار ه�///هف�� ^�ف ا�E///روش///�����///�

�� ASPR ه ����� �� �� : هف ��

ه*�ا� �4�3 ه�( 1.10OllyDbg , 2AIP_2Aspro, 1AIP_2Aspro:ا/?اره�

�>:��� �� �����

jnop790 2006-02-20 : و��ا �H !��*; و

:روش

���� ����� ��: �-� ه� ا�� /�����; ا$ ��ار�� . �&�; ��; ^���( را ��8ن �2asprotect ske 2 ا��� در ا�� ����; .- �2���APIورژن دو و "�2; ��ز . ورژن �� . ���V�c^ 56�7 دارد

:OEPاول '2ا �1دن :روش �2�L1 ز�� را /&�ر �2���� OEP/�ا$ '2ا �1دن

در �&8� MEMORY BP ;/ ;1را �2?��2 و �� ALT+F9از و+c; ه� را "*�د� و در اN �E!#اد ه�( �� 0?ار��، ا�� ! ��; دا"��; /�"��2 �1; در ا��E�� ورژن از ا��� '�و!&�� ر ،.�2?$ 401000ادرس ;2�"EXECRYPTOR �" : ��#�inglobe opcodes of oep v�� و "�*� ��� ! ا��2 ! در ���ASPRO ���� در CALL از )��V�c^ ����، رو$ ا /���+� /*����2 �ا�� "�� ��E�4ا OEP دارم ���1ر

)7� �62E ;1 � :/.ه�(�2&

:دوم /�ز��ز$

Page 82: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨٢

��T4( "�� و از �2��c0 ��4�K �1; ا��� ,asprotect 2(SKE) در /����; ا$ ه���2 1; /� ن�2�c0 1; �� ا�� ;/ �A! �= Emulate system api �ل ان �� '�داز�� و /�ا$ � �� �1; ٢^��4 �; �ل دارد 1; �� ا�

*U �0ا �&2� ;*��! � ده�( در ����; د�-� 1; در ا�/ �+�/ $�. در ا��E�� ورژن )Advanced Import Protection !ا�E; .�� !��*�; اش �1� (^V�c( '�4�8�2; ورود$

ASPR د ، AIP.ا���� ا����وز /��� ر�?�8��0�� /��8��2$ از ��1ه� �����1ر دار���� . /�� د ا���� ���� را� ����د� /��API زد و��ه��$ ا��ا��� ��2 LoadLibrary, GetProcAddress �#/ د و��� را jmp apiرا /�; ��1ر �2

�4ق �2& 1IAT; در ه��� از دو ورژن روش 24&_ ...ا�=�م �2�

0041740C BA B8 D1 77 4A C9 D3 77 60 DA D1 77 2E 8C D1 77

0041741C 0D D6 D1 77 1B C0 D1 77 43 F5 D2 77 B3 03 D3 77

0056B3AC 42 24 80 7C F1 BA 80 7C 08 7F 0C F9 4B 6F DD 78

0056B3BC 3A D9 64 27 A6 0D 81 7C 28 9C 80 7C 97 AA 80 7C

�*"٢ ;� 0 IAT ا$ ورژن��/ X�. )*�� از ��او 22� در��( ه��( و��� دو��� ��Eاب ه��( ا��� ١را �2

�c! �Aوت ه�(!.AIP LY� $�� ;/: 00407A68 JMP DWORD PTR DS:[56B3AC] ; kernel32.Sleep

�2 .2?$ را /; �1ر �2��د. ��: 00416746 CALL 00D60000

�� �/ i6jو ا�� ا"jmp [api]"د 82� ��?-��� �" )V�c^ ;����/ در . &2� 3*U ;� ب /�ا$ ا�� �1ر دو 0 �; ا�&���( ���E; ام 1; /; ا�� 0E:

ه��را API!�� ادرس (ه��( و ����? ان IATان �&�8� �1; ^��و$ ) address base(او�� ادرس /�2_ ا�� 1; �72 اه }���2? 1 را از "*� �2-�2دو ادرس د�) /�2/E#*3 �4ا�را �.

. �� 1; /�ا$ }���2? ه�( را �72 اهCALL"�وع �82 د و ان IATدو�� ادرس ���� 1;

:^�� �� /� دو�� "�وع �� 1�2 1; �4+� /� او�� از ���ظ ا��ا�� �ار�

OEP'2ا �1دن

رت /; ا��intermodular calls�2�( !*�م \ :

Page 83: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨٣

��^CALL ;1 ��AIP 00 :/� اون ��و �1ر دار�E10000

�8&� ��^IAT را X��� ��ا �1د� و ارا '2jmp [api]:

.و ا�� ان �Eاب "� �� �;56b21c :"�وع �82 د 1IAT=� ادرس

Page 84: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨٤

و ����? VA/�� /�; د��( اوردن ( /�; ��1ر �2����� ) Aspro2_AIP2(ا�0 ان �Eاب ه�( �� ا�&���( را �8&�IAT(

: �� 1; }���2? را \ رت �2ه /; ان �2هCALL�2^�� �� ادرس

Page 85: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨٥

��; OLLY DUMP !*���م "�� ����2 ا��2 /������; را /���API 'S CALLو+���� ��1; /���ز ����ز$ �?0 ���/ rebuild import with method 1 3*UDUMP �2را ا�=�م ده.

MUP ASPR MUP ASPR MUP ASPR MUP ASPR 1.31.31.31.3XXXX

67�8,: ����: http://www.zerosecurity.de/

System Cleaner 4.89 Build 110 :ه�ف

http://www.allerasoft.com/products/systemcleaner :ا()ار ه$

OllyDbg 1.09b2 or newer ProcDump(G-rom)/Pe-edit(y0da)

imprec 1.3 (MackT/UCF)(protools.cjb.net) HVIEW / Hex Editor

�وعیA B@?<= >;: از �: 1; و ASPR 1.3x ا�� ����; �#� دار� �� را ���#�� /�( stolen bytesرا }��ن و ���k ا�

!/�2ورد SICE , ICEDUMP , /TRACEX/ون ا���cد� از 2-� .; � ر$؟�

�/OLLY$ر = !!ا�

2�اC :D#ر: DUMPINGو OEP'2ا �1دن the Stolen Bytes)(ن /��( ه�$ �0 "� �� دزد�� "� /-���A/ �2 '2ا �1د

Rebuilding the IAT _&24OEP

�دن C ا�>F اول 'HD�2OEP وDUMPING

). زد� و ادا�; �2هYES�2(/�ز �2&�2 /ون ! �; /; '�I2م ه� OLLY/����; را در ��^F9 ����/ �= :را �2?��2 !� /����; ا�

017E3414 3100 XOR DWORD PTR DS:[EAX],EAX <- $Iای�! ! 017E3416 EB 01 JMP SHORT 017E3419 017E3418 68 648F0500 PUSH 58F64

�-Wا"�; / د�� BP.�ا ؟ �� 1;

.و �� +[ ا���cد� از ا��ا دار�� ��2���... ه� و+�� 1; �� �ول !�ز� وارد �2& OLLYدر��; .را �SHIFT+F9 �2�?2 ا�� �ول !�ز� /� OLLY/�ا$ ادا�; �1ر

: /�ر /�� ا�� �1ر را ا�=�م /�� /#ش �� ا�=��٢��2^ا+3

Page 86: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨٦

017E2D7A 3100 XOR DWORD PTR DS:[EAX],EAX <-&'()*+(ا )- 017E2D7C 64:8F05 00000000 POP DWORD PTR FS:[0] <- &(ار./'- BP ا)+*(017E2D83 58 POP EAX

017E2D84 833D 806D7E01 00 CMP DWORD PTR DS:[17E6D80],0

017E2D8B 74 14 JE SHORT 017E2DA1

017E2D8D 6A 0C PUSH 0C

017E2D8F B9 806D7E01 MOV ECX,17E6D80

017E2D94 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]

017E2D97 BA 04000000 MOV EDX,4

017E2D9C E8 EFE0FFFF CALL 017E0E90

017E2DA1 FF75 FC PUSH DWORD PTR SS:[EBP-4]

017E2DA4 FF75 F8 PUSH DWORD PTR SS:[EBP-8]

017E2DA7 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]

017E2DAA 8338 00 CMP DWORD PTR DS:[EAX],0

017E2DAD 74 02 JE SHORT 017E2DB1

017E2DAF FF30 PUSH DWORD PTR DS:[EAX]

017E2DB1 FF75 F0 PUSH DWORD PTR SS:[EBP-10]

017E2DB4 FF75 EC PUSH DWORD PTR SS:[EBP-14]

017E2DB7 C3 RETN

.'_ ا�� �1ر را �*2&SHIFT +F9 (�2(ا�0 �� �&��ر د�-; ا�� �1ر را ا�=�م /�� /����; ا��ا �82;

�2��/ �=�2 !� /; ا�&�2 ^�1( �2��' )*� ;/ ��:

017E2D7C 64:8F05 00000000 POP DWORD PTR FS:[0]

��BP زدن �/F2 _� .را �SHIFT + F9 �2�?2 ا�=� W0ا"�; و �

F8 �2/� زدن &2� =��� �*1 TRACE OVER و RETN�2��/ �= : را ادا�; �2ه�2 !� /; ا� 017F4EC8 E9 080A0000 JMP 017F58D5 <- OPQRه $Iای�

2���� ا�=� F8^�ل /� زدن �:

017F58D5 D3DE RCR ESI,CL <-- 0)'& ا)+*( -�

017F58D7 B9 7D966271 MOV ECX,7162967D

017F58DC 81C1 38F10A23 ADD ECX,230AF138

017F58E2 D3EE SHR ESI,CL

017F58E4 BA 9ECC7376 MOV EDX,7673CC9E

017F58E9 81EA C56EFFD4 SUB EDX,D4FF6EC5

017F58EF 81F2 B7104902 XOR EDX,24910B7

017F58F5 C1CA 94 ROR EDX,94

017F58F8 8BF2 MOV ESI,EDX

017F58FA 81EE 87D851D2 SUB ESI,D251D887

017F5900 C1CE B0 ROR ESI,0B0

017F5903 8BC6 MOV EAX,ESI

017F5905 C1C8 28 ROR EAX,28

017F5908 53 PUSH EBX

017F5909 5E POP ESI

017F590A 81C5 974FAF73 ADD EBP,73AF4F97

017F5910 BA 048A9178 MOV EDX,78918A04

017F5915 F7D2 NOT EDX

017F5917 F7D2 NOT EDX

017F5919 81C2 FC756E87 ADD EDX,876E75FC

Page 87: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨٧

017F591F 8BDA MOV EBX,EDX

017F5921 41 INC ECX-------------------------

017F5922 8BD9 MOV EBX,ECX |

017F5924 D1C3 ROL EBX,1 | 1�2 )6 345ار�7

017F5926 81F3 A38FD7AC XOR EBX,ACD78FA3 |

017F592C 3BD8 CMP EBX,EAX |

017F592E ^0F85 EDFFFFFF JNZ 017F5921--------------------

017F5934 8BC1 MOV EAX,ECX <<-- )*+(اBP

اهE�. 31 �2; رو .� /� زدن E �*� ��f8 �21�2 '_ .� �1ر �2& �.: �� BP #/ ا"��2 وW0��را ا��ا �1د ;����/ .

�. ��^... " ;1 H*هF8 وF7 !

ب را� /��A$ ه� ه�( �� ��2 ا��2 /� ا���cد� از vE ���4ن EOLLY) Command line ( م "�ط�*! ) TC )Trace Conditionه� را .� 1�2 !� �&� از ا��A در�( از �1ر در /�2� ا�� �1ر /� ���4ن

1�2'_ �� �� ���4ن /�� \ �� X��! رت: TC EIP<900000 ) درCOMMAND LINE ( و _��ENTER 3*U ��ا �*" �! 2���1 )U�� ;/ ;��/ ;1 ١٠-٢ را زد�ل �2&8 K ;�2+د .

اه�2 ا����دE �= :/# از ا�� �1ر �� در ا�

0057EA5B E8 DB E8 0057EA5C 00 DB 00 0057EA5D 8A DB 8A 0057EA5E E8 DB E8 0057EA5F FF DB FF

ا�=� 1=��( د�-;؟ OEP=57EA5B :ه����OEP �2 در ...در��; ه ز }���2? �8�

;1 �2 :در ا�� ^��( �� /; ر���� ه� ه� �� �-�ه� /از�� �� /2EAX=57E318

اه�2 دا"( E د رو ��2زU ��ا! �� .را /; \ رت �61 ا�=�م �2هProcDump/Pe-Edit ( 3*Udump �2(^�� /� �� دا�

�دن C ا�>F دوم 'HD��#ی6 ه2�#Q�دزدی

ب /�ا$ 1ه�$ دزد�� "� Eد دارد ٣ : را� و�١- ASPR /; ��اغ و /# :/�ود �3Y ز�� OEP/��( ه�$ دزد�� "� را ا��ا 1

Stolen_Bytes_1 Stolen_Bytes_2 Stolen_Bytes_3 ..... ..... PUSH_THE_ADDRESS_OF_OEP RET_TO_OEP

٢-ASPR در ا و /# 1 ��2Eرا ذ �ول از ه*; /��( ه�$ دزد�OPE )4�0 و+�� 1; در رو$ ان +�ار

1 b�' را �Aا� Stolen_Bytes_1 Stolen_Bytes_2 Stolen_Bytes_3 PUSH EBX

Page 88: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨٨

PUSH ESI PUSH EDI ...... ...... ...... REPZ STOSB <- Erase the bytes POPFD POPAD JMP_TO_OEP

٣-�/ u2ه �A��د oep /�" و /# از /; popad �( دزد�� "� ا$ و� د �ا"�; /�" و !/.

ب �� /� 1ام �� از ا��K �Aف ه���2؟؟E �3 از ا�&; /; �*( aspr/�ا$ د�ن ا�E�� ��ا^3 + oep ;1 ��ود �� ��2ز دار�/ Trace Log را

�22�/. ;6/olly ;62� 3 1�2 ا�=�م Run Trace ا�� �1ر را /*U ��رت ز : �2ه /�ا$ ا�� �1ر 24�1�( /; \

View->Run trace ��=' ;1 �2 �� /; ا�E ر�4; و �� /2� �&� vE ;/ �2 و2�2� �� ��=' �� �� ��^cpu $�Aادر� ;/

اه�2 د�E $?2. �2S*و �� ه &2� �22I! 2; /� ان�": 017F5779 F3:AA REP STOS BYTE PTR ES:[EDI] 017F577B 9D POPFD 017F577C 61 POPAD 017F577D -E9 D992D8FE JMP SYSTEMCL.0057EA5B <-- the address of the OEP

�/�ا�� �� ^��( دوم �Kف ه���2 /(:

�/�ا�� ^�� در '=�� win98 �1ر �2& �; رو$ winxpا�� ^��( رو$ /cpu ، Ctrl+S را �84ر ط را �� � ���2 (Serch for Seqeuance of Commads)�2ه�2 E ��و ا :

PUSH EBX PUSH ESI PUSH EDI

�2 :1; ا��Aرا '2ا �� 1

01029227 0055 8B ADD BYTE PTR SS:[EBP-75],DL 0102922A EC IN AL,DX ; I/O command 0102922B 83EC 54 SUB ESP,54 0102922E 53 PUSH EBX 0102922F 56 PUSH ESI 01029230 57 PUSH EDI 01029231 6A 11 PUSH 11

اه�2 دا"( " ٠٠"از E را �A "� �1د� و ا�' �8.: 55,8b,ec,83,ec,54 :/��( ه�$ دزد�� "� ��

اه�2 دا"( ^�� E �2ز� �Aن /; ا� . 2�� ن L#4 ��2ز$ /; ان �ار�� olly ا��A را /. �� .را /

iat #ز�2�HD' 7@م �#ز7

١- �� /����; را ا��ا �� 1�2 و ���T /�ر 0?ار$ ان �82

Page 89: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٨٩

٢- Imprec�2 را /�ز �1د� و از +�*( �2�( ا��ا ا���7ب �� 1٣- IAT AutoSearch�2را �� ز� �62 1 .� ه�( �22I! bc �2ه�2 . ن ١٠٠٠ /; ��bc�? را از -{E �- Get Imports�2�?2� را �- Show Invalid�2�?2� را را ا���7ب �� �*����Trace level 1�2ت �621 را�( �1د� و /� رو$ ا"& -٧ : �261 �1د� و ^�ل /�� �� .2?$ "�2; ا�� دا"�; /�"Show Invalid�2دو/�ر� /� رو$ -٨

FThunk: 0019E258 NbFunc: 00000400

1 0019E258 kernel32.dll 00D6 DeleteCriticalSection

1 0019E25C kernel32.dll 0228 LeaveCriticalSection

1 0019E2A4 kernel32.dll 01D1 GetThreadLocale

1 0019E2A8 kernel32.dll 01B9 GetStartupInfoA

0 0019E2AC ? 0000 017E0F2C <-- good

0 0019E2B0 ? 0000 017E139C <-- good

1 0019E2B4 kernel32.dll 018B GetModuleFileNameA

1 0019E2B8 kernel32.dll 0183 GetLocaleInfoA

1 0019E2BC kernel32.dll 0181 GetLastError

1 0019E2C0 kernel32.dll 0158 GetCurrentDirectoryA

0 0019E2C4 ? 0000 017E1408 <-- good

1 0019E2C8 kernel32.dll 0133 FreeLibrary

1 0019E2CC kernel32.dll 011C FindFirstFileA

1 0019E314 kernel32.dll 00A0 CloseHandle

0 0019E318 ? 0000 0255A00E <-- BAD

1 0019E31C user32.dll 0112 GetKeyboardType

1 0019E320 user32.dll 019F LoadStringA

1 0019E324 user32.dll 01AD MessageBoxA

1 0019E328 user32.dll 0026 CharNextA

0 0019E32C ? 0000 70F7D832 <-- BAD

1 0019E330 advapi32.dll 00F7 RegQueryValueExA

1 0019E334 advapi32.dll 00EF RegOpenKeyExA

1 0019E338 advapi32.dll 00D8 RegCloseKey

0 0019E33C ? 0000 F37514C2 <-- BAD

1 0019E340 oleaut32.dll 0006 SysFreeString

1 0019E344 oleaut32.dll 0005 SysReAllocStringLen

1 0019E348 oleaut32.dll 0004 SysAllocStringLen

0 0019E34C ? 0000 4007F56E <-- BAD

1 0019E350 kernel32.dll 0307 TlsSetValue

1 0019E354 kernel32.dll 0306 TlsGetValue

1 0019E358 kernel32.dll 01E6 GlobalAlloc

0 0019E35C ? 0000 017E139C <-- good

0 0019E360 ? 0000 BF57C0D8 <-- BAD

; رت د��� !*�م ادرس ه�$ ."�2; /; ا�� ادا�; '2ا �2&\ ;/ ��/ ��bad د /����; '� ( را E در ;��" ( _��; ا���7ب 1Cut Thunk(s) �2ا���7ب 1�2 و �c\ ��را از �21 را�( �1دن /� ا .

�A! �Eدر اgood thunkد اه /E �=در ا� . .ه�( 1; دار�� good^�� و+( در�( �1دن /�2; /��( ه�$

�21 �� 3*U رت \ ��/:

0019E2AC-> 017E0F2C ->GetProcAddress

0019E2B0-> 017E139C ->GetModuleHandleA

0019E2C4-> 017E1408 ->GetCommandLineA

0019E35C-> 017E139C ->GetModuleHandleA

0019E428-> 017E1420 ->LockResource

0019E47C-> 017E13C4 ->GetVersion

0019E4AC-> 017E0F2C ->GetProcAddress

0019E4B8-> 017E139C ->GetModuleHandleA

Page 90: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩٠

0019E4FC-> 017E13F8 ->GetCurrentProcessId

0019E500-> 017E13F0 ->GetCurrentProcess

0019E50C-> 017E1430 ->FreeResource

٩- ��^Fix Dump �7را ا�� Xه�2 و �4�3 دا��2 را �84ر �2 .ب �2&

�دن C 678#رم درR 'HD�2oep

/��( /; � ، 57ea5b : ��2و��oepه-?ا اد�� ر � رد LU+; ��ن را /�ز �1د� و /; ا4�( -١ د�� +�ار i�U٠٠ !� از ا�� /��( ه� ر�4; و /; ��$ / ;�" � L� /��( ه�$ دزد�� "� را 1; +

�21 �� ��2Eداد� و �4�3 را ذ. و �4�3 ��ن را /�ز ��ز$ ) ProcDump/Pe-Edit (را /�ز �1د� �pe editor 3Y ^�ل �� -٢

�21 ��: Oep �/ �//�ا �ه�$ دزد� )��/ �K�E ;/ 57ea55د 82� .

:رخ �2ه ا�� �1ر را �� 1crash �2 ا�0 در ا��ا$ /����; -٣Olly �2 را /�ز �� �*���2 و �4�3 24&_ "� را /�ز �� 1

2� eax �� .; ��ار$ در oepدر ���2 12 eax��د!�ن ه�( /; "*� ��c0 ��ار .. �2Eرا ذ د EAX=57E318ا��/

: ا�� ��8ن �2ه H2/ �� ;1 از �� ���4ن ^��( دزد�� "� دارد 1; دزد�� "� / دMOV EAX, 0157E318 ا�� ه� / د�

;1� د!�ن ا��ا در ه-?ا اد�� ر!�ن ا��اE ص داد��]�Eد ا E ;/ /��( را 2 : در�( 1

B818E35700 MOV EAX, 0157E318

/��( دزد�� "� دا"�١١�2=٦+٥ا�� /; ا�� �#� ا�( 1; �� 82 د )د�2*�ل ( � zU�/ ;1oep �/ا\�6 �� /�ا

11=B(hex) OLD_OEP-STOLEN_BYTES=57EA5B-B=57EA50 OEP = 57EA50

�2 �� 1�2�� /��( ه� را ا4�B; �1د� و ��^�ل در ه-?ا اد�� ر اT :_ /� �� اد�� ر دو/�ر� ا��ا ! 55,8B,EC,83,EC,54,B8,18,E3,57,00

Entery Point to : 57EA50

.^�ل /����; را ا��ا �1د� و ه*; .2? در�( ه�(

Page 91: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩١

Bypassing ActiveMark TryMedia v5

Debug Check

?Ancient TriJong v :ه]ف http://d.trymedia.com/d/bigfishgames/1h_pkg531/bfg12y0xenxx1/en_ancienttrijong_inst.exe

:وب _$ی^ http://www.bigfishgames.com/

^b$cd عfg: ActiveMark TryMedia v5.?

hi_ :j_fQ� Olly Debug v1.08 or better :ا()ار ه$

: 1ActiveMark*� ا�ULKت در /�ر�

�0��� /�� ��� روش � د/���; TryMediaدر ا�� ����; �#� �8�2 د !�� در �� رد W0"��� از ^���( .�� د�

2B< داد� " د !. TryMedia ����4ن v�E ��� , "--MPRMMGVA--", ;�/ د � !�� و��&4; �2��B�2 �4��3 ا��ا��� ا���

1 ����� !'_ �� ه� /; ا�� vE ���4ن ^*6; �2&�2.د����0 ه� را "

ا�=�م �2هolly �2اول از ه*; ا�� !2T*�ت را در

نbreakpoints on APIاز �1ر ا�ا��E !*�م . Trymedia و ا���ا �1 �� ����� !*�م ا��A را " ) .terminate(�1ر �� ا�ازد ا��ا در د����0 از

�2 �� 1olly�2ا�� 0?�; ررا ه� در T رت ز�� !\ ;/ :

Page 92: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩٢

اه�2 د��، ... �261 �1د� MEMORY MAP^�ل /� رو$ د1*; E �8�&� $ار ز���د�� �*" �=و در ا�

8��&� �����Eاز دو����2 �&���8 !��� ا v��� ! ���" )��V�c^ ;������/در � Trymedia v��E ;��1 )�ه�� ������ ا�� �� " د /�ا$ ه*�2 ان را د���ل �1د� ، در ا�� �* �; �� در E �" ;�c0 ;1 �����4.TEXT �� ا��ا

�2/��. اه�2 د� E ا� : و+�� 1; �� ا�� �&�8 را .� �� 1�2 ا�

--MPRMMGVA-- user32.dll and the debugger error message

ب E-MPRMMGVA--- �� را ا���7ب �1د� و bp �2رت /� رو$ ان +�ار �� ده :/; ا�� \a memory breakpoint on Access

��ر &� �*"mem break on access �ر ه�� دا"�; ا��&� _'SHIFT+F9 �2�8�4ر ده ... �" ��� �*�/�ا�� ا�� �*&�� ه��( ��B�^ b /�"� �1; د�����0 را .�� ( ا���2 . ن ان دارد vE ���4ن را �72 ا� /

1؟( در ) memory map( '�_ دو/��ر� /�; ا�=�� ���2و�� TEXT.^�� ه*�ن �&�8� �1; ر�2��4 ��د!��ن ه��(

$��/ �8&� �= ....memory mapه�( ^�ل /���ل ا�� �&�8 ر�4; در text �8&� .bss.ا� اه2 د� 1; ان ����2 �4��3 ا��ا��� را /�; اول �&��8 E �*".bss )4; ��1د� ا����Bا��0 ��� /�����; را ...ا

اه�2 د� f9 ;1/�زدن E ح Bو ;/ � /; ا�E ان � "�; "� ا�( —MPRMMGVA-- ا��ا 21 �8&� 3Eدا.bss 3��4 �2�� از ��/exe "�� �" �' ...

ب Eاز ١٠ �2 و ��� /��( /#� رت ز��� /�� رو$ ان +��ار �bp��2 �4�3 ا��ا�� را ا���7ب ��� 1�\ ;�/ : �� ده�2

memory breakpoint on WRITE

.... را زد�f9^�ل 4; 1 �� ا��� —MPRMMGVA--و و+�2&; �72 اه �B�2 ا�� �Eرا /; ا

Page 93: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩٣

:ر ا�=� �� ا����2 و �� د

REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]

.وارد �� 1 esi ;/ ediا�� ���4ن /��( ه� را از

�" ;�c0 ���4ن vE ;1 �22/ �� �2ه�( 1; در esiداMPRMMGVA— 3E–ا�0 ر�2��� ه� .� 1edi د 82� �� ) bss.ادرس /# از ���2 �4�3 ا��ا�� در �&1 ) �8

add 1' to the' را �� Increment را ا���7ب �1د� و �261 را�( /� رو$ ان زد� و EDIر�2���

current value�2 : ا���7ب �� 1

�Bن �� /��( /; ان ا 4; "� ا�( ا�� را ا�=�م ده2 !� �� ا� /*Ac � ;1�vE 3��" �2 ���4ن ه�( .>:/; ��T ��2� 1; .� د���گ ان از �1ر ا��4د� :)

�0��2< 1 !�� در � رد .� د�B � دار� trymedia ا�� ه� �� ��ار !E …. �0���د�-� E �$ و� د د� .ا��ا '�b �� �1دم E � �2اد TEXT.ا�� ا�0 از �&�8 ..�7 اه2 دا"(

�/�ا�� ا�0 ا�� روش � د/��; �1را�� �ا"/�1 ;#�� � ��82/ �&� �! 2� -/ �� ;/ �c � )!!!. ا�2 وارم از ا�� ����; �Wت /�د� /�"2

د trymediaد��E�� 32; "ن ا�� ����; !W0 �A"�� از د���گ .� در / / :

Page 94: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩٤

ICE License Overview Cracking Tomahawk Gold 3.0

k[�Rیfg : anorganix :ا()اره$

OllyDbg PEiD 0.94

PE Explorer (or other resource editor) :اه]اف

Tomahawk Gold zip.Tomahawk/downloads/com.montana.nativewinds://http

TIceLicense for Delphi com.ionworx.www://http

Q#A@C T,�U2

ICE LicenseICE LicenseICE LicenseICE Licenseا����وA()@ر V@2@د F !ی�(H2#C ی! و� CCCC�� �� �� �� BuilderBuilderBuilderBuilder و Borland Delphi Borland Delphi Borland Delphi Borland Delphi ا2�وزQ یT) از >@ی(��#� T2.و �ن را ارای' ده<#Aد@W '2#*���ی#ل از A ورژن �ان 2<)@ا*< 'H>7@�از Y@Z)A@ژ� ...

asymmetric encryptionasymmetric encryptionasymmetric encryptionasymmetric encryption7 �>Y@A ا��� ��*#2' ا7)\#دZC Q<� و �]<#ر� از [#\D)8#� دی%��ی#ل ه#� #� 'Hا� 12#ی�� !!!!�>Z>� T2 ر را@()Aو�F !ا*#ی<8#� ای@A � در زی

ICE License Overview : ·Antidebugging & Antimonitors Protection (protect against Code Tracing) ·Sophisticated Asymmetric Encryption Technology (prevent against Key Generator) ·Advanced Digital Authentication to prevent against patching ·Advanced Code Encryption Protection to prevent against cracking or dumping ·Transfer License to another PC (Trial License or Full License) ·Create a Key Generator for your partner or distributor ·Detects backdating or demo reinstallation to gain additional usage ·AES Rijndael Encryption functions to protect your data ·Cryptographic hashing MD5 to lock licenses to your software ·Reliable Machine Locking Protection (based on manufacturer's information) ·Network LAN Control Protection by TCP/IP Protocol (in Trial or Full Mode ) ·Encrypt & Hide Application Strings to provide a high level of security ·Prevent and Control your LicenseKey against illegal exportation - New ! ·Using compact LicenseKeys to register with ActiveKey for increased security ·Add Extra Information inside License (in Trial or Full Mode) ·View LicenseKey to see details about any License ·Create custom URL links to directly access your ordering web page ·Invisible software based protection requiring no dongles ·Create evaluation copies of your software by days, number of uses, hours or a set date ·Compatible with Windows 95, 98, Me, NT, 2000, XP (with SP2) ·Support Windows XP SP2 (from ICE License v2.09)

html.IceLicense/com.ionworx.www://http

�رT7 ه�ف�: دش از upx ه�( Tomahawk Gold �/ ;1هف �� /����; E از )V�c^ $و /�ا �" �' ICE License د��cا��

�2 /� �� /����; � ا�; �82 �� 1; او� ��E ;7...�1د� ب و+�� /����; را /�ز �� 1trial $�A�26/�+ ( و دو�� �� ��$ از�ه :/����; �1ر �*� 1

Page 95: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩٥

About-Box

User Name: Trial License User Company: Evalution Product Name: Tomahawk License Expiration: 30 days Software Status: Trial Hardware Locked: No Network Protection: No Network User Allowed: No

�2 �� /2peid �/ ;����/ ;1 �2 ^�� ا�0 /����; را /� /�ز 1 UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo�" �84د� .

kanal �Aاز �4�K ا��ا /� ! ;-�2 1; �21 �� �. CRC32 [poly])�ه . ب ^�� و+( ا��� ه�( E) �� ر LE\; /# از � د /����; در ) /�و�upx/�ا$ �?��2ت /��82 /; +�*( ����ت ا�K ;/olly در ��

:ا�=� +�ار �2-���

٠٠ C75340 > 60 PUSHAD ٠٠ C75341 BE 00209A00 MOV ESI,Tomahawk.009A2000 ٠٠ C75346 8DBE 00F0A5FF LEA EDI,DWORD PTR DS:[ESI+FFA5F000 ] ٠٠ C7534C C787 10B75E00 5F8>MOV DWORD PTR DS:[EDI+5EB710],714A815F ٠٠ C75356 57 PUSH EDI

��^f8 ��را زد� و اpushad �212 1; ه ز ر�2��� ( را رد �2& ;� !esp)�ا��ا ا���7ب �1د� و ). ه�$ ��( هFollow in dump �� را زد� و bp رت \ ;/HW BP (Byte)���2 �1را��1 �� 0?ار�ل /����; را /� زدن . در او�^f9 ا��ا �1د� و

....و/# � /( دا�X �1دن...ه��oep �2 /; دا3E ان ر�4; و ^�� �� در f7/# از ان /� زدن . �� ا���jmp �2 �� در

�2 �� /2kanal ;1 �2دو/�ر� /� peid^�ل ا�0 /����; را در 1 �.: PEiD’s KANAL Analysis

١ x BASE64 table ٢ x CRC32

١ x FGInt ElGamalDecrypt ٣ x MD5

;�7� 2 رش را �� 12 }����� ه�( ا��! ^�� "*� 1 �� �&4]! ;1 ;Sاز ا� .

ب /����; را /� EPExplorer )*�+ ;/ ز �1د� و�/ Resources Viewer/Editor H7/ ر�4; و RC Data را /�ز �1د� و ��ل �A��4 /-�د��/! ( ه� �Vه� �82 � 1*� د... /� دا/3 �261 رو$ ان TFORM3در �� ���4 /; ��م � ���1 ;1 �2�2 �� /2�2 1; �&� از �� /21 )+

�Aا�TIceLicense )�اه�2 دا"( .. ه E �21 ��-� H7/ ��ا�0 د+�2 /; ا:

PExplorer’s Initial View

OnAppKeyIncorrect | IceLicense1AppKeyIncorrec OnTrialExpired | IceLicense1TrialExpired

OnLicenseInvalid | IceLicense1AppKeyIncorrec OnLicenseFileError | IceLicense1AppKeyIncorrec

OnLicenseInfo | IceLicense1LicenseInfo OnTrial | IceLicense1Trial

OnRegistered | IceLicense1Registered OnTrialProgress | IceLicense1TrialProgress

2E )�رت ز�� ه ض �1دن داد� ه�$ /�� /; \U �2ها�=�م / �1ر$ 1; �� /�� �A :�6 واB< ه�( !

PExplorer’s Modified View

Page 96: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩٦

OnAppKeyIncorrect | IceLicense1Registered

OnTrialExpired | IceLicense1Registered OnLicenseInvalid | IceLicense1Registered OnLicenseFileError | IceLicense1Registered OnLicenseInfo | IceLicense1Registered

OnTrial | IceLicense1Registered OnRegistered | IceLicense1Registered OnTrialProgress | IceLicense1Registered

ش �82 د٢ ا��ا$ �4�3 �� /2� 1; /����; /# از /# از ذ��2E �1دن و��E ;2��� . ;1 )�ا�=�م ده�2 ا�� ه ب �1ر د�-�$ 1; /�� E 3��4“Tomahawk.key ” �21 ��2Eا��ا دو/�ر� ذ �2 و /#1 b�' 3 ا��اE�2 و !*�م دا .را /� �� اد�� ر ��� /�ز 1

.�ا �� ا�� �1ر را �1د�� ؟L� ن �� +.OnLicenseInvalid >> IceLicense1Registered و

OnLicenseFileError >> IceLicense1Registered 3��4 3Eت دا�ULKرا در�( �1د�� ^�� /����; /� اTomahawk.keyرد 72� �/ 3&8� ;/ .

!/6; /����; ر�2��� "� ...��2و�� about^�ل /����; را از � ا��ا �1د� و /; +�*( ل �2- �� ا*#� ��K)�2� �1دن /����; ه� b�1 $ز"� دا"�; و /�ا �{ ;�� ;�" � ��.

Anti TZ Copy Protection

�mم ��M� .د �� �R� �W $� '�/ ��� (�� !�N" . �G ه� �/ ز�/ (n' ر ��0اه�! /� tz copyا��

protection!داز��R/ .

ه ا��ار

:��م ا4?ارPregap

Ultraiso Isobuster :�7( ا4?ار

Cd Recordable Cd Writer

�� '�ر��2ن و L1 �� د$ ه��� ��JB ;1 د$ ه��� 1; ا�از� �2j �A�{ $�A6��4 وا+#� ا�( ��� : هف

TZاز روش . ا���cد� �2&

�����

!ا���; را� د��� ا�� روش ه� �*&� ا�( ا�� و+( ز��د$ �2��د /; + ل �#�وف �1ر �8 �ار��2-?ار�� ��_ cd rom/writer �� د$ را 1; /� ا�� روش ���T4( "� در درا� در ا�� روش ا/�ا

;����/pergap ��ازرا را� ���2

3�85: ا��DB �()E ADFان 73B )B(-A ه(; د)/A� 3 @<? ا)<'= >'3; را ا:(م

�G- �+ه�'- CLONECD )-ر را ا:(م داد ا)� H(3 ا/(ار د.Iه3 37م ا )(ا)AT H 37م اI.ار �Sب وKQ ز)(د; -'Oد و ا)+M( H� K �B AB3L ا-JD(ن �3دن

E()� ا)H راه� ه& �A -( AB ان ر '�)& راB KU( )6 37م اI.ار ...0وردن ....�Wرت �8)3د

K-3I )B �X()I AB )- رت�W 3ا-( در هBIN&(ج دار)'DUا .

Page 97: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩٧

261 v�4start2 �4�3 ذultraiso ��2E/# از ا!*�م �1ر، /� .� را زد� و ���6 /�ا$ ذ��2E �4�3 ا���7ب �2& �" (*.bin) ه*�ن ��image )��4 ;/ �2 و ا��ا��3 و ذiso ��2E �4�0; "� از �� د$ را /�ز �2&!

�2��*� ��:

_��:

��T �� �� ��2 !� �1ر ا!*�م ��/�:

:در ��I2' ;/ )��Aم ز�� ��2��2

3�� ان ا�=�م داد �1ر �٢2/# از ا!*�م !�: ١- ;����/ ;/ k��� isobuster�2 رد ��T را 1; ^=�2 "� /�ز��/� 1� $�A6��4 ر�4; و extract

files)(

د ( ا��ا /� رو$ �� د$ را�( �1د� -٢�E ��/ ت��ULK( ا�ه� ��&*� ;�� و��وز د��� ��8 د explorerا�

4 u2�2 ه^��� � /�( /�; )���6 د�� �8 د�#� و+�� درون �� د$ رام را �72 اه1 ��-� �2 2�"��ا�� �-��ان �

Page 98: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩٨

isobuster د را از �E �1; ^=�� ��1ذب 2 ���2 ا��ا ا��ا �1د� و �A6��4 �� را 1; ^=�2 "� / د� �� /2�2#� /��80; ا� 1; ا�� روش v�4 �� �� د$ K )��^ ;/ و د�( داد� ا�rewritable اه 72� !!

ا د +E ;2�رت او �3 از !��3 "ن در ا�� ا�( ^�ل ا��ا ^�ل 3��4 /; \extract�1د� و !*�م .

/� ا���7اج �1د�� \| jb |/ را 1; در ' "; LY�JB در ا�=� �� �&� از �A6��4$ �� د$ ه�$E ;/ د / ;& 20-� /��( ^=� دا"�; /�"٢/ون ا�

?(�F5 از ?FQ

?(�F5 از �MB

&�ف ا$�

و '�ر��2ن �� $ �� .� و �4�3 ه� را /�; \� رت ����� JB $ �� د$ ه�$ ا�� روش را "7[� /� رو د���/ ������ L����1 ���A6��4 ا�����7اج ���1دم ��1; درو ن ) ���� �c��\ ���/ 3����4 د ��1; درون ارد د���� �8��2��� ���Y1در ا

^�وف �& اE( '� "� ا�( 1; در ا�� روش �4�3 ه�0 �; ا�ULK!� دا"�; ^�c "� و ���� /��+� �2*��� :- ( (

mup PEtite 2.x

HI

I'm jnop790 and This is my frist tut in english so I hope u enjoy

it.

Today we will unpack PEtite 2.x by Ian Luck .i didn’t see any tut

about that maybe there is ! anyway I do this only for fun.

TOOLS

We need this tools:

odbg110( simple edition)(Oleh yuschuk)

imprec1.6 or above(MackT/uCF)

PEID(snaker,Qwerton and Jibz)or every tools like that

and some brain( you ) ;)

START

my target packed with this packer and my detector (PEID or RDG) tells

this

Page 99: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

٩٩

Load target to olly and we are here:

We here .

Ok we press 4-5 times …and we here:

Ok see the registers special ESP (YES esp trick ) after 2 F8(STEP

OVER) that changed like this:

So we do like this:

(right click and choose FOLLOW IN DUMP):

Page 100: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٠٠

We set this breakpoint in dump window (like above)

After that we click 1 time RUN or F9

After that 2 times we push F9 and our land here:

Ok for see what happened here we can use this key(ctrl+a)

And we see this :

But it is not like OEP …again … we use 3 times F9 till we see this :

Page 101: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٠١

Its beautifull !

Again use CTRL+A and :

But its not like OEP …scrool up and:

Yes this is OEP …we do like above .

(410EC9(oep)-400000(image base)=10EC9)

Now we dump and check IAT

Fire up IMPREC :

Ok and click on :

Opps we have invalid imports (click on )

Page 102: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٠٢

How can we solve it ?

We use this option:

Yes TRACE LEVEL 1

Page 103: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٠٣

AGAIN we click on

Bingo

Ok we need to dump and rebuild IAT ,do like this :

Page 104: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٠٤

And click on FULL DUMP :

OK NOW fix dump file:

Good work,

Good luck .

Jnop790 (1379-1387)

Best regards.

و /�UnREal RCE،EXETOOLS، SNDTeam، ARTeam ;2 در /� ���س از ه*; دو���ن

را� �Bر زدن /; ���A�1�" k4$ ��ز�� ��م ا4?ار ا���cد� " د �; در � � ��i در �A( \6< و دو���� از اوارم2ا� ا�E �AU ;/ i�� � ��د� از ا�c2( ا��� �/�ا�� ���/"��2� �.

'���ن

4A 6E 6F 70 37 39 30 20 28 31 33 37 39 2D 31 33 38 37 29

Page 105: Manual  Unpacking + By Re.M J Nop790

©jnop790 – RE.M

http://reversengineering.wordpress.com

١٠٥

Th3 3nd

Re.m