Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Been playing around as i always do :)
- been bugging me there arent any disasemplers that can view any code, only dissasemply.
- and some interesting stuff came up
- first you should build all the samples and projects in the sdk.
- you would need to do an batch build with both debug and release.
- after build you would have debug and an realese folder.
- now open up tuner software from the sdk.
- Choose open static analyze
- now if you open any elf from the build, and open them in the tuner it looks like this after
- using sample from libsecure release build.
- Aes.obj
- right click it, then it shows disasemply
- [img]http://i.imgur.com/AVEGX.png[/img]
- now this is okay since you can get some info in tuner what the functions are for.
- but now comes the neat part if you do the same with the debug buils
- Aes.obj
- right click it.
- shows all the source code insteed :D
- [code]/* SCE CONFIDENTIAL
- * Copyright (C) 2011 Sony Computer Entertainment Inc.
- * All Rights Reserved.
- */
- /*
- * libsecure encryption/decryption sample file
- *
- * - libsecure -
- *
- * samples/ps3/cipher/source/aes.c
- *
- * Version Date Design Log
- * --------------------------------------------------------------------
- * 2.00 Nov,19,2010 Emmanuel Poitier Naming changes
- * 1.00 Apr,04,2008 David Carter Initial version
- */
- // ---------------------------------------------------------------------
- // Includes
- // ---------------------------------------------------------------------
- #include "libsecure.h"
- #include "main.h"
- /*E A symmetric key */
- static unsigned char s_symmetricKeyArray[16]= {
- 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11,
- 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99
- };
- static SceLibSecureSymmetricKey s_symmetricKey = {
- sizeof(s_symmetricKeyArray), (void*)(&s_symmetricKeyArray)
- };
- /* The plaintext message */
- static char s_message[] = "AES testing message.";
- // ---------------------------------------------------------------------
- // Functions
- // ---------------------------------------------------------------------
- SceLibSecureErrorType processAesEcbNoPadding()
- {
- SceLibSecureErrorType err;
- printf("--------------------------------------------------\n\n");
- /*E ECB encryption / decryption */
- err = encryptDecryptNoPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_ECB,
- SCE_LIBSECURE_PADDING_NONE, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- /*E ECB encryption / decryption */
- err = encryptDecryptNoPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_ECB,
- SCE_LIBSECURE_PADDING_NONE_NORMAL, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- /*E ECB encryption / decryption */
- err = encryptDecryptNoPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_ECB,
- SCE_LIBSECURE_PADDING_NONE_STEALING, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- return SCE_LIBSECURE_OK;
- }
- SceLibSecureErrorType processAesEcbWithPadding()
- {
- SceLibSecureErrorType err;
- printf("--------------------------------------------------\n\n");
- /*E ECB encryption / decryption */
- err = encryptDecryptWithPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_ECB,
- SCE_LIBSECURE_PADDING_NIL, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- /*E ECB encryption / decryption */
- err = encryptDecryptWithPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_ECB,
- SCE_LIBSECURE_PADDING_RANDOM, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- return SCE_LIBSECURE_OK;
- }
- SceLibSecureErrorType processAesCbcNoPadding()
- {
- SceLibSecureErrorType err;
- printf("--------------------------------------------------\n\n");
- /*E CBC encryption / decryption */
- err = encryptDecryptNoPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_CBC,
- SCE_LIBSECURE_PADDING_NONE, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- /*E CBC encryption / decryption */
- err = encryptDecryptNoPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_CBC,
- SCE_LIBSECURE_PADDING_NONE_NORMAL, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- /*E CBC encryption / decryption */
- err = encryptDecryptNoPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_CBC,
- SCE_LIBSECURE_PADDING_NONE_STEALING, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- /*E CBC encryption / decryption */
- err = encryptDecryptNoPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_CBC,
- SCE_LIBSECURE_PADDING_NONE_BLKTERM, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- return SCE_LIBSECURE_OK;
- }
- SceLibSecureErrorType processAesCbcWithPadding()
- {
- SceLibSecureErrorType err;
- printf("--------------------------------------------------\n\n");
- /*E CBC encryption / decryption */
- err = encryptDecryptWithPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_CBC,
- SCE_LIBSECURE_PADDING_NIL, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- /*E CBC encryption / decryption */
- err = encryptDecryptWithPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_CBC,
- SCE_LIBSECURE_PADDING_RANDOM, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- return SCE_LIBSECURE_OK;
- }
- SceLibSecureErrorType processAesCtrNoPadding()
- {
- SceLibSecureErrorType err;
- printf("--------------------------------------------------\n\n");
- /*E CTR encryption / decryption */
- err = encryptDecryptNoPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_CTR,
- SCE_LIBSECURE_PADDING_NONE, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- /*E CTR encryption / decryption */
- err = encryptDecryptNoPadding(SCE_LIBSECURE_CIPHER_AES, SCE_LIBSECURE_BLOCKCIPHERMODE_CTR,
- SCE_LIBSECURE_PADDING_NONE_NORMAL, &s_symmetricKey, s_message, 0);
- if (err != SCE_LIBSECURE_OK) return err;
- printf("--------------------------------------------------\n\n");
- return SCE_LIBSECURE_OK;
- }
- SceLibSecureErrorType processAes()
- {
- SceLibSecureErrorType err;
- /*E ECB with no padding encryption / decryption */
- err = processAesEcbNoPadding();
- if (err != SCE_LIBSECURE_OK) return err;
- /*E CBC with no padding encryption / decryption */
- err = processAesCbcNoPadding();
- if (err != SCE_LIBSECURE_OK) return err;
- /*E CTR with no padding encryption / decryption */
- err = processAesCtrNoPadding();
- if (err != SCE_LIBSECURE_OK) return err;
- /*E ECB with padding encryption / decryption */
- err = processAesEcbWithPadding();
- if (err != SCE_LIBSECURE_OK) return err;
- /*E CBC with padding encryption / decryption */
- err = processAesCbcWithPadding();
- if (err != SCE_LIBSECURE_OK) return err;
- return SCE_LIBSECURE_OK;
- }
- [/code]
- this works on all the debug objects files in debug build.
- could be off use when looking at big builds
- and when building you own
- and one more thing the tuner can take alot off the extracted files that i posted,
- and show there build too.
- also some of the files if you used dev_blinds to copy intire dev flash/2/3 from ps3
- some of the elf files there are debugs and the pic files are also shown and how there build there.
- And work also if you take all the *.a files extract them with 7zip you have alot off *.o files they work there also.
- so for exampel libguard.a extarcted there are alot of *.o inside
- just one in the tuner with sources
- [code]C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SDK\TARGET\SPU\INCLUDE\SPU_INTERNALS.H
- si_wrch(MFC_EAH,si_from_uint(eahi));
- 00000324 40800026 il r038,0x0000 EVN
- C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SPU_RUNTIME\IMPLEMENTATION\SRC\SPURS3\JM2\SPU\JOB_CRT_AUXILIARY.C
- 00000328 340004A3 lqd r035,0x0000(r009) ODD
- 0000032C 8482C2A7 selb r036,r005,r011,r039 EVN
- C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SDK\TARGET\SPU\INCLUDE\SPU_INTERNALS.H
- [...]
- {
- si_wrch(MFC_LSA,si_from_ptr(ls));
- si_wrch(MFC_EAL,si_from_uint(ea));
- si_wrch(MFC_Size,si_from_uint(size));
- si_wrch(MFC_TagID,si_from_uint(tagid));
- si_wrch(MFC_Cmd,si_from_uint(cmd));
- }
- static __inline__ void
- spu_mfcdma64(volatile void *ls, unsigned int eahi, unsigned int ealow, unsigned int size, unsigned int tagid, unsigned int cmd)
- {
- si_wrch(MFC_LSA,si_from_ptr(ls));
- 00000330 21A00802 wrch $MFC_LSA,r002 ODD
- si_wrch(MFC_EAH,si_from_uint(eahi));
- 00000334 21A008A6 wrch $MFC_EAH,r038
- si_wrch(MFC_Size,si_from_uint(size));
- 00000338 04001225 lr r037,r036
- C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SPU_RUNTIME\IMPLEMENTATION\SRC\SPURS3\JM2\SPU\JOB_CRT_AUXILIARY.C
- 0000033C 08015205 sf r005,r036,r005 EVN
- C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SDK\TARGET\SPU\INCLUDE\SPU_INTERNALS.H
- si_wrch(MFC_EAL,si_from_uint(ealow));
- 00000340 21A0090A wrch $MFC_EAL,r010 ODD
- C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SPU_RUNTIME\IMPLEMENTATION\SRC\SPURS3\JM2\SPU\JOB_CRT_AUXILIARY.C
- 00000344 18090387 a r007,r007,r036 EVN
- C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SDK\TARGET\SPU\INCLUDE\SPU_INTERNALS.H
- si_wrch(MFC_Size,si_from_uint(size));
- 00000348 21A009A5 wrch $MFC_Size,r037 ODD
- C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SPU_RUNTIME\IMPLEMENTATION\SRC\SPURS3\JM2\SPU\JOB_CRT_AUXILIARY.C
- 0000034C 18090306 a r006,r006,r036 EVN
- 00000350 3B8251A2 rotqby r034,r035,r009 ODD
- C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SDK\TARGET\SPU\INCLUDE\SPU_INTERNALS.H
- si_wrch(MFC_TagID,si_from_uint(tagid));
- 00000354 21A00A22 wrch $MFC_TagID,r034 03 (00000350) REG
- si_wrch(MFC_Cmd,si_from_uint(cmd));
- 00000358 21A00A8F wrch $MFC_Cmd,r015 ODD
- [...]
- {
- si_wrch(MFC_LSA,si_from_ptr(ls));
- si_wrch(MFC_EAL,si_from_uint(ea));
- si_wrch(MFC_Size,si_from_uint(size));
- si_wrch(MFC_TagID,si_from_uint(tagid));
- si_wrch(MFC_Cmd,si_from_uint(cmd));
- }
- static __inline__ void
- spu_mfcdma64(volatile void *ls, unsigned int eahi, unsigned int ealow, unsigned int size, unsigned int tagid, unsigned int cmd)
- {
- si_wrch(MFC_LSA,si_from_ptr(ls));
- 0000035C 04000382 lr r002,r007 EVN
- si_wrch(MFC_EAL,si_from_uint(ealow));
- 00000360 3FE0030A shlqbyi r010,r006,0x00 ODD
- C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SPU_RUNTIME\IMPLEMENTATION\SRC\SPURS3\JM2\SPU\JOB_CRT_AUXILIARY.C
- 00000364 1C092889 ai r009,r081,0x0024 EVN
- 00000368 217FF685 brnz r005,0x0000031C ODD
- 0000036C 1C020408 ai r008,r008,0x0008 EVN
- 00000370 40800083 il r003,0x0001
- 00000374 34000429 lqd r041,0x0000(r008) 01 (0000036C) REG
- 00000378 3B821486 rotqby r006,r041,r008 05 (00000374) REG ODD
- 0000037C 7CFFC328 ceqi r040,r006,-0x0001 03 (00000378) REG EVN
- 00000380 207FEC28 brz r040,0x000002E0 01 (0000037C) REG ODD ?HINT
- 00000384 20000503 brz r003,0x000003AC ?HINT
- 00000388 1C0928AF ai r047,r081,0x0024
- 0000038C 408000AC il r044,0x0001 EVN
- 00000390 340017AE lqd r046,0x0000(r047) ODD
- 00000394 4080012A il r042,0x0002 EVN
- 00000398 3B8BD72D rotqby r045,r046,r047 04 (00000390) REG ODD
- 0000039C 0B6B562B shl r043,r044,r045 03 (00000398) REG EVN
- 000003A0 21A00B2B wrch $MFC_WrTagMask,r043 03 (0000039C) REG ODD
- 000003A4 21A00BAA wrch $MFC_WrTagUpdate,r042
- 000003A8 01A00C02 rdch r002,$MFC_RdTagStat ODD
- 000003AC 408000B2 il r050,0x0001 EVN
- 000003B0 34010731 lqd r049,0x0040(r014) ODD
- 000003B4 3EC100B3 cwd r051,0x04(r001)
- 000003B8 B60C5933 shufb r048,r050,r049,r051 04 (000003B0) REG ODD
- 000003BC 24010730 stqd r048,0x0040(r014) 03 (000003B8) REG
- 000003C0 1C0B2838 ai r056,r080,0x002C
- 000003C4 1C0E6837 ai r055,r080,0x0039 EVN
- 000003C8 34001C36 lqd r054,0x0000(r056) ODD
- 000003CC 3B8DDB35 rotqby r053,r054,r055 05 (000003C8) REG
- 000003D0 14009AB4 andi r052,r053,0x0002 03 (000003CC) REG
- 000003D4 200006B4 brz r052,0x00000408 02 (000003D0) REG ?HINT
- 000003D8 3400683F lqd r063,0x0010(r080) ODD
- C:\HOME\KANEE\SVNWORK\PS3-SVN\SVN\SYS\TRUNK\SPU_RUNTIME\IMPLEMENTATION\SRC\SPURS3\JM2\SPU\JOB_MEMORY_CHECK.H
- 000003DC 408000B9 il r057,0x0001 EVN
- 000003E0 33800041 lqr r065,0x000003E0 ODD[/code]
- and that aint in the wiki ;)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement